我在手机上运行了一个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上编码。
答案 0 :(得分:2)
这绝对是一个JVM错误。 startApp()
只应在启动时调用一次,在调用pauseApp()
或您自己致电notifyPaused()
之前无法再次调用。
我建议的是以下代码:
private boolean midletStarted = false;
public void startApp() {
if (!midletStarted) {
midletStarted = true;
//Your code
}
}
这样您就可以跟踪midlet状态的变化。但事实上,你最好不要使用这个方法,而是使用构造函数。
哦,顺便说一下,我不认为有多个实例或类似的东西,这只是一个JVM错误。
答案 1 :(得分:1)
也许你做了一些让运行时调用pauseApp()
的东西,然后当你将焦点设置到app时,运行时再次调用startApp()
。
将登录信息放入pauseApp()
,看看会发生什么。