문제

휴대 전화로 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() 그리고 무슨 일이 일어나는지보십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top