0

我有一个在手机上运行的 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上编码。

4

2 回答 2

2

这绝对是一个 JVM 错误。应该只在启动时调用一次,并且在被调用或您自己调用startApp()之前不能再次调用。pauseApp()notifyPaused()

我建议的是以下代码:

private boolean midletStarted = false;

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

通过这种方式,您可以跟踪 midlet 状态更改。但实际上最好不要使用这种方法,而是使用构造函数。

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

于 2009-06-26T21:13:53.250 回答
1

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

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

于 2009-06-26T21:13:20.707 回答