Название метода класса MID-лета |
Описание |
protected abstract void destroyAppf) |
AMS сигнализирует MID-лету о прекращении работы. MID-лет входит в прерванное состояние |
void notifyDestroyed () |
MID-лет запрашивает о входе в прерванное состояние |
void notifyPausedf) |
MID-лет запрашивает о дезактивации и входе в приостановленное состояние |
protected abstract void pauseApp() |
AMS сигнализирует MID-лету остановиться, MID-лет входит в приостановленное состояние |
void resumeRequest () |
МЮ-лет запрашивает о повторном входе в активное состояние |
protected abstract void startApp() |
AMS сигнализирует MID-лету, что он активен |
Обратите внимание на то, что программа в листинге 3.1 не вызывает System.exit(). Приложения MIDP отличаются от приложений J2SE тем, каким образом они заканчивают работу. Для завершения работы вашего MID-лета вы просто должны вызвать метод MID-лета notifyDestroyed(). Это сигнализирует AMS, что ваш MID-лет завершил выполнение. AMS закрывает MID-лет и все его объекты. Однако виртуальная машина продолжает работу.
Вы хотите, чтобы виртуальная машина продолжала работу, чтобы можно было запустить другие MID-леты. Вызов System.exit() сигнализирует виртуальной машине завершить свою работу. Такое поведение нежелательно в приложениях MIDP. Ваши приложения не должны завершать работу виртуальной машины, в действительности они и не могут этого сделать. Если ваше приложение вызывает System.exit(), java.lang.SecurityException обязательно прекратит работу. Вы увидите что-либо сходное со следующим:
java.lang.SecurityException: MIDP lifecycle does not support system exit.
(Жизненный цикл MIDP не поддерживает системный выход).
at Java.lang.Runtime.exit(+9)
at Java.lang.System.exit(+7)
at HelloWorld3$MyCommandListener.commandAction(+15)
at javax.microedition.Icdui.Display$DisplayAccessor.
commandAction(+99)
at сот.sun.kvem.midp.Icdui.EmulEventHandler$EventLoop.run(+430)
MID-лет не должен закрывать виртуальную машину по двум причинам. Во-первых, другие приложения могут быть запущены, и, закрывая виртуальную машину, вы можете разорвать их работу. Во-вторых, вы никогда не запускаете виртуальную машину, поэтому вы не должны ее закрывать. Виртуальной машиной управляет AMS. Она запускает ее и закрывает, когда обнаруживает, что она не нужна или если ей нужно управлять системными ресурсами.