Вопрос

У меня есть мидлет 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
    }
}

Таким образом, вы можете отслеживать изменения состояния мидлета.Но на самом деле лучше вообще не использовать этот метод, а использовать вместо него constructor .

О, кстати, я не думаю, что существует несколько экземпляров или что-то в этом роде, это просто ошибка JVM.

Другие советы

Может быть, вы сделали что-то, что вызвало вызов среды выполнения pauseApp() и затем, когда вы устанавливаете фокус на приложение, среда выполнения вызывает startApp() снова.

Включите вход в систему pauseApp() и посмотрим, что произойдет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top