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