Это действительно интересный вопрос!
Существует различие в поведении System.exit()
для Java SE API и BB Java API:
- В Java SE API: завершаетв настоящее время работает виртуальная машина Java .
- В BB Java API: завершает текущее Java-приложение .
Также проверьте, что сказанооб этом в «Изучении разработки игр Blackberry» Кэрол Хамер и Эндрю Дэвисона:
Внимание! Платформа BlackBerry не запускает ваше приложение на отдельной виртуальной машине, а это значит, что вы должны бытьочень осторожен с уборкойОстатки более раннего запуска (такие как статические переменные и другие данные, все еще находящиеся в памяти) могут потенциально повлиять на последующие запуски приложения.Это также означает, что существует глобальное пространство имен, поэтому, если два класса имеют одно и то же имя, могут возникнуть ошибки.
Итак, да, для каждого устройства BB есть единственная JVM.И да, в приложении BB вызов System.exit()
просто останавливает ваше приложение, оставляя все ваши статические данные в оперативной памяти, если вы не выполните предварительную очистку .
Так что вам не следует избегать System.exit()
- это законный / правильный способ закрыть приложение BB, , но просто выполните очистку перед этим вызовом .
ОБНОВЛЕНИЕ:
по электронной почте Ой.Я создал тестовое приложение (используя симулятор JDE 4.7.0 + Storm 9530 4.7.0), чтобы проверить, действительно ли статический материал остается в оперативной памяти после вызова System.exit()
.И оказывается, что он больше не остается там.В следующий раз, когда я войду в приложение, статические переменные будут нулевыми (как и следовало ожидать, они будут в Java SE).Поэтому мне неясно, что Кэрол Хамер и Эндрю Дэвисон имеют в виду, говоря «Остатки более раннего прогона (такие как статические переменные и другие данные, все еще находящиеся в памяти) могут потенциально повлиять на последующие запуски приложения» * 1039 *