Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Как завершить мидлет?


Автор: nerezus 3.1.2007, 12:31
Собственно 
Код

System.exit(0);

вызывает SecurityException.

Как завершить мидлет?

Автор: nerezus 3.1.2007, 12:58
Код

try {
                destroyApp(false);
            } catch (MIDletStateChangeException e) {
                e.printStackTrace();
            }
            notifyDestroyed();


FIN )

Автор: javastic 4.1.2007, 16:01
Не надо использовать System.exit(0), используй notifyDestroyed(), а если хочешь сделать какую-то обработку перед закрытием то вызывай перед этим destroyApp(false).

Автор: nerezus 28.2.2007, 21:41
Снова вопрос: как закрыть мидлет из одного из классов? Раньше использовал 
Код

int error = 1/0;
, но теперь пришлось запихнуть это в блок try, который ловит все ошибки, поэтому данная фишка не срабатывает.

Добавлено @ 21:55 
Вобщем временно заменил Exception на определенный вид ошибки, но хотелось бы более красивый вариант )

Автор: Dancer 28.2.2007, 22:05
1/0 - это 5+ изврат!!!! 
надеюсь поможет: http://forum.mobilab.ru/viewtopic.php?t=994&sid=94bfcfadef8258d0492fc55d080a5b16

Автор: nerezus 28.2.2007, 22:35
Эх, по ссылке его делают синглтоном ) у меня уже Canvas синглтон =) Некрасиво все классы делать синглтонами имхо =) Ну да ладно, как 1/0 перестанет устраивать - сделаю так =)

Автор: javastic 1.3.2007, 11:00
Можно сделать так:
Код

public void exitMidlet() {
  destroyedApp(false);
  notifyDestroyed();
}


а потом вызывай из любого класса, правда нужно передовать ссылку на мидлет.

Автор: Dancer 1.3.2007, 12:57
ну, вообще синглетон там класс, наследуемый от MIDlet. Чем тебя смущает это? и вообще разьве ты как то собираешься его использовать в приложении ещё по другому? если да, то это вообще изврат 100% smile. (я имею ввиду использовать в приложении класс наследуемый от MIDlet, а потом плодить объекты данного типа или далее наследоваться от него. хотя может быть будет какое-то применение, но я его пока что не догоняю smile ) 
Делать его сиглетоном для того, чтобы можно было обратиться к объекту MIDlet и вызвать методы на паузу или закрытие приложения из любого другого класса приложения. (вроде бы это очевидно и кристально понятно)
а причём тут твой синглетон Canvas - не понял smile (ну есть у тебя один единственный объект для Canvas - хорошо, что мешает или смущает в том, что какой-то другой объект в приложении будет то же одним единственным?)

Автор: W0LF 1.3.2007, 13:35
Цитата(nerezus @  28.2.2007,  22:35 Найти цитируемый пост)
Эх, по ссылке его делают синглтоном ) у меня уже Canvas синглтон =) Некрасиво все классы делать синглтонами имхо =) Ну да ладно, как 1/0 перестанет устраивать - сделаю так =) 

Некрасиво делать так - 
Код

try {
    application.run() 
} catch (Exception exc) {
    application.stop();
} 

А вот када нужно синглтон применять - 
Цитата

- Должен быть ровно один экземпляр класса, легко доступный всем клиентам;
- единственный экземпляр должен расширяться путем порождения подклассов, и клиентам нужно иметь возможность работать с расширенным экземпляром без модификации своего кода.

 Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес
"Приемы объектно-ориентированного проектирования. Паттерны проектирования"

Автор: javastic 1.3.2007, 15:25
Dancer, чего то я не понял, это ты кому ответил? smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)