Жизненный цикл класса приложения Android

Приложение для Android, над которым я работаю, переопределяет класс Application для хранения облегченного состояния (имя пользователя, местоположение GPS и т. Д.) В статических переменных. Большая часть этого состояния устанавливается в OnCreate активности запуска (имя пользователя извлекается из prefs, выполняется прослушиватель местоположения). Безопасно ли полагаться на активность запуска для инициализации класса Application? Существуют ли случаи, когда класс Application может быть воссоздан без создания действия Launch?

Вопрос возникает, потому что я столкнулся с исключением нулевого указателя при доступе к переменной в классе Application при возобновлении работы приложения после того, как телефон спал в течение нескольких часов (приложение было оставлено на переднем плане до того, как телефон перешел в спящий режим). Возможно ли, что процесс был остановлен, когда телефон спал, и при пробуждении телефона класс Application был воссоздан, верхняя активность в стеке была возобновлена, но активность запуска. OnCreate не была запущена, поэтому класс Application не инициализирован?

Обратите внимание, что я попытался протестировать такие сценарии, заставив приложение прекратить использование приложений «Настройки» / «Управление». Однако, Я не могу воссоздать проблему. При следующем запуске создается класс Application, за которым следует операция launch.onCreate.

Можно ли предположить, что экземпляр класса Application будет существовать в течение всего процесса, и что при создании класса Application он будет эквивалентно «перезапуску» приложения, т.е. начать с нового стека действий (и первое действие в стеке - это действие запуска)?

57
задан Patrick Cullen 3 January 2011 в 15:14
поделиться