Я не могу найти жизненный цикл Application object (extend Application). Например, что произойдет, если у меня есть широковещательный приемник, который вызывается через Alarm. Будут ли методы в приложении вызываться? Или все зависит от приложения? Если у меня есть экземпляр данных, созданный в приложении, и я вызываю его из широковещательного приемника, будет ли он доступен? Каков жизненный цикл объекта приложения, когда он уничтожен? когда он вызывается при использовании Alarms? Что происходит, когда активность не находится на переднем плане с объектом Application? Заранее спасибо. Гильермо.
Жизненный цикл объекта приложения Android
Ответ 1
Посмотрите на это так: перед всем остальным есть Application
. Он создается перед вашим BroadcastReceiver
, перед вашими экземплярами Activity
, перед вашими экземплярами Service
и т.д. Не имеет значения, что-либо находится на переднем плане. Приложение будет прекращено, когда все ваши экземпляры Activity
исчезнут, когда вы выйдете из своего BroadcastReceiver
и как только ваши экземпляры Service
будут завершены. Там нет гарантии, что он будет убит, но это последняя вещь, когда ОС решила, что ваше приложение должно умереть.
Ответ 2
В объекте приложения уже запущены первые компоненты[About]. Это также всегда последний компонент приложения, который завершается.
Этот объект предоставляет следующие основные методы жизненного цикла[Multiprocess]:
onCreate()
- вызывается до запуска первых компонентов приложенияonLowMemory()
- вызывается, когда система Android запрашивает, чтобы приложение очистило памятьonTrimMemory()
- вызывается, когда система Android запрашивает, чтобы приложение очистило память. Это сообщение включает в себя индикатор, в каком положении находится приложение. Например, константа TRIM_MEMORY_MODERATE указывает на то, что процесс находится примерно посередине фонового списка LRU; Освобождение памяти может помочь системе продолжить выполнение других процессов в списке для повышения общей производительности.onTerminate()
- только для тестирования, не вызывается в производствоonConfigurationChanged()
- вызывается при каждом изменении конфигурации
Подробнее здесь