Опишите жизненный цикл активити.

Жизненный цикл Activity — это последовательность состояний, через которые проходит экран Android-приложения от запуска до уничтожения. Управляется системой Android, чтобы оптимально расходовать ресурсы и сохранять пользовательский опыт при смене конфигурации, уходе в фон, пересоздании и т. д.


Основные состояния Activity

  1. Запускается (Created) — объект Activity создаётся, но ещё не виден.

  2. Видим, но не активен (Started) — Activity уже показана пользователю, но не имеет фокуса (поверх может быть диалог).

  3. Активен (Resumed) — Activity на переднем плане, пользователь взаимодействует с ней.

  4. Приостановлен (Paused) — Activity частично перекрыта, но ещё видна.

  5. Остановлен (Stopped) — Activity полностью невидима, но объект остаётся в памяти.

  6. Уничтожен (Destroyed) — Activity удалена, память освобождена.


Ключевые методы жизненного цикла

Последовательность вызовов:

  1. onCreate(Bundle savedInstanceState) Вызывается при создании Activity. Здесь:

    • инициализируются UI-элементы (setContentView()),

    • восстанавливается состояние (savedInstanceState),

    • настраиваются ViewModel, адаптеры, слушатели.

  2. onStart() Activity становится видимой, но пользователь ещё не взаимодействует. Можно запускать UI-анимации, регистрировать broadcast-receiver’ы.

  3. onResume() Activity получает фокус. Здесь запускаются камеры, воспроизведение, сенсоры, слушатели.

  4. onPause() Activity теряет фокус (например, поверх пришло уведомление или другая Activity). Нужно остановить анимации, сохранение промежуточных данных, отписаться от тяжёлых ресурсов (камера, GPS). Быстро выполняется — система ожидает возврат, иначе возможен ANR.

  5. onStop() Activity больше не видна. Здесь останавливаются фоновые операции, освобождаются ресурсы, снимаются слушатели.

  6. onDestroy() Завершение жизненного цикла: Activity уничтожается навсегда. Может быть вызвано вручную (finish()) или системой при нехватке памяти. Используется для финальной очистки.

  7. onRestart() Вызывается, когда Activity возвращается из состояния Stopped в Started (например, при возвращении из другого экрана).


Схематично порядок вызовов при разных сценариях

Первый запуск:

onCreate() → onStart() → onResume()

При сворачивании (домой):

onPause() → onStop()

При возвращении из фона:

onRestart() → onStart() → onResume()

При смене ориентации (конфигурации):

onPause() → onStop() → onDestroy()
onCreate() → onStart() → onResume()

(если не переопределено android:configChanges).

При закрытии:

onPause() → onStop() → onDestroy()

Дополнительные детали

  • savedInstanceState используется для сохранения данных при пересоздании Activity (поворот, выгрузка).

  • ViewModel живёт дольше, чем Activity, и сохраняет состояние между пересозданиями.

  • Если система убивает процесс в фоне, при следующем запуске onCreate() получит savedInstanceState с ранее сохранёнными данными.

  • Ошибка многих разработчиков: делать тяжёлые операции в onCreate() или onResume() — это блокирует UI-поток и вызывает ANR.


Таким образом, жизненный цикл Activity — это управляемая системой последовательность переходов, обеспечивающая предсказуемое поведение и экономию ресурсов. При тестировании важно проверять корректность переходов между состояниями, восстановление данных и отсутствие утечек при onStop()/onDestroy().

Last updated

Was this helpful?