令人惊讶地终止midlet在我的应用程序中不起作用。也许是因为我使用了主题,但destroyApp()
和notifyDestroyed()
是不够的。
以下面的代码为例:
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
System.out.println("destroying");
notifyDestroyed();
}
protected void startApp() throws MIDletStateChangeException {
try {
// init modules
controller.initialize();
}catch (Exception e) {
viewer.showAlert("error in startApp() init controller");
destroyApp(true);
}
}
答案 0 :(得分:2)
您专门从notifyDestroyed()
内部调用startApp()
。
我最好的猜测是你尝试使用它的手机(或模拟器)不能很好地处理它。
请改为尝试:
当controller.initialize()
引发异常时,只需显示一个简单的Form
,其中包含一个“退出”Command
和一个StringItem
错误消息。
从notifyDestroyed()
回调中致电CommandListener.commandAction()
。
就线程而言,当用户想要退出你的应用程序时,你可以很好地终止它们。
大多数MIDP运行时将能够处理一些不能很好地终止的线程但是未正确清理系统资源可能会导致问题,尤其是在试图永远不会终止Java虚拟机进程的平台上。
答案 1 :(得分:0)
你应该调用'notifyDestroyed'方法来退出你的应用程序而不是'destroyApp'方法。