一个游戏程序,在调用MIDLET的DESTROYAPP方法后,将线程先停掉,将显示置为NULL,然后调用NOTIFYDESTROY方法企图退出程序,这个时候程序可能会出现一个异常,java.lang.nullpointerException,而且这个异常的抛出的情况是不确定的,我无法复制这个异常抛出的情况。而且最后也无法捕获这个异常。请大家帮忙。
大致代码是这个样子的:说明一下,程序运行于NOKIA的S60
Display.getDisplay(this).setCurrent(null);
Game.pGame.bRunning = false;//线程的标志位
notifyDestroyed();//调用这个就有可能抛异常,郁闷,为什么?
------解决方法--------------------------------------------------------
http://blog.csdn.net/n5/archive/2005/02/24/300519.aspx
部分Nokia报java.lang.nullpointerException异常的解决方法,适合Nokia机型(6600,6670等)
不要在在主while循环中调用destroyApp,而改成检测一个标志,退出主循环后再调用destroyApp
boolean exit ;
...
while(!exit){
...
if(...){
exit = true ;
}
...
}
destroyApp(true)
注:可在destroyApp内部调用notifyDestroyed