Как да излезете/прекратите/спирате midlet j2me?

Изненадващо прекратяването на midlet не работи в моето приложение. Може би защото използвам Threads, но destroyApp() и notifyDestroyed() не са достатъчни.

Вземете например следния код:

protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
    System.out.println("destroying");
    notifyDestroyed();
}
protected void startApp() throws MIDletStateChangeException {
   try {
        // init modules
        controller.initialize();
    }catch (Exception e) {
        viewer.showAlert("error in startApp() init controller");
        destroyApp(true);
    }

}


person hsmit    schedule 25.04.2010    source източник
comment
Не намерих решение в stackoverflow.com/questions/1485943/ за съжаление.   -  person hsmit    schedule 25.04.2010


Отговори (2)


Вие конкретно се обаждате на notifyDestroyed() отвътре startApp().

Най-доброто ми предположение е, че телефонът (или емулаторът), на който опитвате това, не се справя твърде добре.

Опитайте това вместо това:

  • Когато controller.initialize() хвърли изключение, покажете просто Form с едно "Изход" Command и StringItem съобщение за грешка.

  • Обадете се на notifyDestroyed() от обратно повикване на CommandListener.commandAction().

Що се отнася до нишките, зависи от вас да ги накарате да прекратяват добре, когато потребителят иска да излезе от вашето приложение.

Повечето MIDP изпълнения ще могат да се справят с някои нишки, които не се прекратяват добре, но оставянето на системните ресурси неправилно почистени може да причини проблеми, особено на платформи, които се опитват никога да не прекратяват самия процес на Java Virtual Machine.

person michael aubert    schedule 26.04.2010

трябва да извикате метода „notifyDestroyed“, за да излезете от приложението си, а не метода „destroyApp“.

person Wonil    schedule 26.04.2010