Java me 在j2me中终止应用程序的问题,但这并不意味着退出应用程序

Java me 在j2me中终止应用程序的问题,但这并不意味着退出应用程序,java-me,Java Me,我有一个j2me的例子。。我想在进程中的应用程序执行代码时终止。这是我的简单代码 else if (c == cmdStop) { //command berhenti browser.stop(); } 问题是,当我尝试终止应用程序时,应用程序仍然工作,或者继续执行并忽略函数system.exit 仍然是这个代码 private void paintParserScreen(Graphics g){

我有一个j2me的例子。。我想在进程中的应用程序执行代码时终止。这是我的简单代码

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)