如果不是发生异常或死循环的话,很有可能是serviceRepaints()造成的死锁,这时可以考虑采用以下方式做run
//#if NOKIA_S40E3
//@ if (s_isRunning)
//#else
while (s_isRunning)
//#endif
{
s_lTimeCur = System.currentTimeMillis();
repaint();
//#if NOKIA_S40E3
//@ Display.getDisplay(s_midlet).callSerially(this);
//#else
serviceRepaints();
//#endif
try
{
long dt = System.currentTimeMillis() - s_lTimeCur;
if (dt < FRAME_LIMIT)
Thread.sleep(FRAME_LIMIT - dt);
}
catch (Exception e)
{
}
}
//#if NOKIA_S40E3
//@ else
//#endif
{
s_midlet.destroyApp(true);
s_midlet = null;
}
//#if NOKIA_S40E3
//@ if (s_isRunning)
//#else
while (s_isRunning)
//#endif
{
s_lTimeCur = System.currentTimeMillis();
repaint();
//#if NOKIA_S40E3
//@ Display.getDisplay(s_midlet).callSerially(this);
//#else
serviceRepaints();
//#endif
try
{
long dt = System.currentTimeMillis() - s_lTimeCur;
if (dt < FRAME_LIMIT)
Thread.sleep(FRAME_LIMIT - dt);
}
catch (Exception e)
{
}
}
//#if NOKIA_S40E3
//@ else
//#endif
{
s_midlet.destroyApp(true);
s_midlet = null;
}