Frage

Ich habe eine J2ME Midlet auf einem Handy läuft. Der Code funktioniert gut, aber die Frage, die aufkommt ist, dass das Programm scheint mehr als eine Instanz von sich selbst zu laufen. Ich habe Code zu Beginn der Anwendung innerhalb der APPSTART () Methode, die zwei Mal ausgeführt wird, wenn die Anwendung gestartet wird. Während der Laufzeit des Programms, kann der Code ausgeführt werden zweimal gesehen werden, wenn der Text auf den Bildschirm geschrieben wird.

Der Code sieht wie folgt aus:

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
}

Ich habe keine Ahnung, warum der Code zweimal aufgerufen wird.

Ich bin Codierung auf dem i290.

War es hilfreich?

Lösung

Dies ist definitiv ein JVM Fehler. startApp() sollte nur einmal beim Start aufgerufen wird und kann nicht wieder aufgerufen werden, bis pauseApp() genannt wird, oder Sie rufen sie notifyPaused().

Was ich vorschlagen, ist der folgende Code:

private boolean midletStarted = false;

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

Auf diese Weise können Sie midlet Zustandsänderungen verfolgen. Aber in der Tat ist es besser, dass Sie diese Methode überhaupt nicht verwenden und Konstruktor statt.

Oh, übrigens, ich glaube nicht, dass es einige mehr Instanzen oder so etwas, das ist nur ein JVM Fehler.

Andere Tipps

Vielleicht haben Sie etwas, das die Laufzeit Anruf pauseApp() gemacht und dann, wenn Sie den Fokus auf die App setzen die Laufzeit aufgerufen startApp() wieder.

Setzen Sie die Protokollierung in pauseApp() und sehen, was passiert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top