Java me 在j2me中终止应用程序的问题,但这并不意味着退出应用程序
我有一个j2me的例子。。我想在进程中的应用程序执行代码时终止。这是我的简单代码Java me 在j2me中终止应用程序的问题,但这并不意味着退出应用程序,java-me,Java Me,我有一个j2me的例子。。我想在进程中的应用程序执行代码时终止。这是我的简单代码 else if (c == cmdStop) { //command berhenti browser.stop(); } 问题是,当我尝试终止应用程序时,应用程序仍然工作,或者继续执行并忽略函数system.exit 仍然是这个代码 private void paintParserScreen(Graphics g){
else if (c == cmdStop) {
//command berhenti
browser.stop();
}
问题是,当我尝试终止应用程序时,应用程序仍然工作,或者继续执行并忽略函数system.exit 仍然是这个代码
private void paintParserScreen(Graphics g){
int w = width;
int h = fontHeight+2;
int x = 0;
int y = height - h;
int curLoaded = 0;
int value = 0;
int iPercent = 0;
if(maxElementNum!=0){
curLoaded = wapRender.getCurLoadedTag();
value = curLoaded * 100 / maxElementNum;
iPercent = (curLoaded * (w - 2)) / maxElementNum;
}
g.setColor(0x808080);
g.fillRect(x, y, w, h);
g.setColor(0x0000ff);
g.fillRect(x + 1, y + 1, iPercent - 2, h - 1);
g.setColor(0xffffff);
g.drawString("proses..." + value+"%",
width>>1, y + 1, Graphics.TOP|Graphics.HCENTER);
}
他们说
java.lang.SecurityException: MIDP lifecycle does not support system exit.
at java.lang.Runtime.exit(+9)
at java.lang.System.exit(+7)
at com.gameislive.browser.Browser.stop(+8)
at Tampilkan.commandAction(+147)
at javax.microedition.lcdui.Display$DisplayAccessor.commandAction(+282)
at javax.microedition.lcdui.Display$DisplayManagerImpl.commandAction(+10)
at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68)
at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(+47)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+250)
请帮助我如何处理这种情况?尝试在MIDlet实例中调用方法。尝试在MIDlet实例中调用方法。您遇到的安全异常说明了一切 J2ME应用程序的行为与J2SE应用程序不同 你不能以同样的方式启动它们,也不能以同样的方式终止它们 在您的例子中,您尝试编写的那种J2ME应用程序称为MIDlet MIDlet生命周期由MIDP运行时管理,该运行时运行在Java虚拟机之上,该虚拟机只执行Java字节码并处理系统资源 当MIDlet启动时,MIDP运行时调用MIDlet构造函数及其
javax.microedition.MIDlet.MIDlet.startApp()
override
为了终止MIDlet,MIDP运行时调用javax.microedition.MIDlet.MIDlet.destroyApp()
覆盖
当MIDlet决定可以终止它时,它可以调用自己的destroyApp()
,而不是等待MIDP运行时来完成
为了告诉MIDP运行时它可以安全终止,MIDlet必须调用javax.microedition.MIDlet.MIDlet.notifyDistromed()
,通常作为destroyApp()中的最后一个方法调用
我建议阅读以了解所有生命周期和运行时问题
最新版本还包含许多构造合理的MIDlet供您参考。您得到的安全例外说明了一切
J2ME应用程序的行为与J2SE应用程序不同
你不能以同样的方式启动它们,也不能以同样的方式终止它们
在您的例子中,您尝试编写的那种J2ME应用程序称为MIDlet
MIDlet生命周期由MIDP运行时管理,该运行时运行在Java虚拟机之上,该虚拟机只执行Java字节码并处理系统资源
当MIDlet启动时,MIDP运行时调用MIDlet构造函数及其javax.microedition.MIDlet.MIDlet.startApp()
override
为了终止MIDlet,MIDP运行时调用javax.microedition.MIDlet.MIDlet.destroyApp()
覆盖
当MIDlet决定可以终止它时,它可以调用自己的destroyApp()
,而不是等待MIDP运行时来完成
为了告诉MIDP运行时它可以安全终止,MIDlet必须调用javax.microedition.MIDlet.MIDlet.notifyDistromed()
,通常作为destroyApp()中的最后一个方法调用
我建议阅读以了解所有生命周期和运行时问题
最新版本还包含许多构造合理的MIDlet供您参考。我认为它用于退出应用程序。。我试过这个方法,我想它是用来退出申请的。。我试过这个方法,你已经找到好的解决方法了吗?我认为它可能与线程有关..你已经找到好的解决方案了吗?我认为这可能与线程有关。。
java.lang.SecurityException: MIDP lifecycle does not support system exit.
at java.lang.Runtime.exit(+9)
at java.lang.System.exit(+7)
at com.gameislive.browser.Browser.stop(+8)
at Tampilkan.commandAction(+147)
at javax.microedition.lcdui.Display$DisplayAccessor.commandAction(+282)
at javax.microedition.lcdui.Display$DisplayManagerImpl.commandAction(+10)
at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68)
at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(+47)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+250)