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