J2ME 미들렛 문제의 여러 인스턴스
문제
휴대 전화로 J2ME 미드 렛을 실행하고 있습니다. 코드는 제대로 작동하지만 문제는 프로그램이 하나 이상의 인스턴스를 실행하고 있다는 것입니다. 응용 프로그램의 시작 부분에 응용 프로그램이 시작될 때 두 번 실행되는 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
}
}
이렇게하면 미들렛 상태 변경을 추적 할 수 있습니다. 그러나 실제로이 방법을 전혀 사용하지 않고 대신 생성자를 사용하는 것이 좋습니다.
오, 그건 그렇고, 나는 여러 인스턴스 나 그와 비슷한 것이 있다고 생각하지 않습니다. 이것은 단지 JVM 오류 일뿐입니다.
다른 팁
어쩌면 당신은 런타임 호출을 한 것을했을 것입니다 pauseApp()
그런 다음 앱에 초점을 맞추면 런타임이 startApp()
다시.
로그를 넣으십시오 pauseApp()
그리고 무슨 일이 일어나는지보십시오.
제휴하지 않습니다 StackOverflow