Подтвердить что ты не робот

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

Я не могу найти жизненный цикл Application object (extend Application). Например, что произойдет, если у меня есть широковещательный приемник, который вызывается через Alarm. Будут ли методы в приложении вызываться? Или все зависит от приложения? Если у меня есть экземпляр данных, созданный в приложении, и я вызываю его из широковещательного приемника, будет ли он доступен? Каков жизненный цикл объекта приложения, когда он уничтожен? когда он вызывается при использовании Alarms? Что происходит, когда активность не находится на переднем плане с объектом Application? Заранее спасибо. Гильермо.

4b9b3361

Ответ 1

Посмотрите на это так: перед всем остальным есть Application. Он создается перед вашим BroadcastReceiver, перед вашими экземплярами Activity, перед вашими экземплярами Service и т.д. Не имеет значения, что-либо находится на переднем плане. Приложение будет прекращено, когда все ваши экземпляры Activity исчезнут, когда вы выйдете из своего BroadcastReceiver и как только ваши экземпляры Service будут завершены. Там нет гарантии, что он будет убит, но это последняя вещь, когда ОС решила, что ваше приложение должно умереть.

Ответ 2

В объекте приложения уже запущены первые компоненты[About]. Это также всегда последний компонент приложения, который завершается.

Этот объект предоставляет следующие основные методы жизненного цикла[Multiprocess]:

  • onCreate() - вызывается до запуска первых компонентов приложения
  • onLowMemory() - вызывается, когда система Android запрашивает, чтобы приложение очистило память
  • onTrimMemory() - вызывается, когда система Android запрашивает, чтобы приложение очистило память. Это сообщение включает в себя индикатор, в каком положении находится приложение. Например, константа TRIM_MEMORY_MODERATE указывает на то, что процесс находится примерно посередине фонового списка LRU; Освобождение памяти может помочь системе продолжить выполнение других процессов в списке для повышения общей производительности.
  • onTerminate() - только для тестирования, не вызывается в производство
  • onConfigurationChanged() - вызывается при каждом изменении конфигурации

Подробнее здесь