我有一个手机上运行的J2ME midlet的。该代码工作正常,但出现的问题是,该方案似乎运行的本身不止一个实例。我有一些代码在应用程序启动时运行两次AppStart的()方法中的应用程序的开始。该程序的生命周期中,代码可以看出运行两次当文本写入到屏幕上。

的代码看起来是这样的:

public MyClass()
{
    form = new Form("MyProgram");
    cmdClose = new Command("EXIT", Command.EXIT, 1);

    form.addCommand(cmdClose);
    form.setCommandListener(this);

    display = Display.getDisplay(this);
    display.setCurrent(form);
}

public void startApp()
{
    form.append("App starting\n");
    // Rest of program
}

我不知道为什么代码被调用两次。

我编码的i290。

有帮助吗?

解决方案

这绝对是JVM错误。 startApp()应该只有一次启动时被调用,直到pauseApp()叫的还是你打notifyPaused()自己不能再被调用。

我的建议是将以下代码:

private boolean midletStarted = false;

public void startApp() {
    if (!midletStarted) {
        midletStarted = true;
        //Your code
    }
}

这样,您就可以跟踪MIDlet的状态变化。但实际上它是更好的,你不都使用这种方法,并使用构造函数来代替。

哦,顺便说一句,我不认为有一些多个实例或类似的东西,这仅仅是一个JVM错误。

其他提示

也许你做了一件让运行时调用pauseApp(),然后当你将焦点设置到应用程序再次调用startApp()运行。

把记录在pauseApp(),看看会发生什么。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top