Встречается на 60% собеседований по Mobile

Какие знаешь методы жизненного цикла Activity и как они отрабатывают

Методы жизненного цикла Activity — это набор колбэков, которые вызываются системой при переходе активности между состояниями: создание, запуск, остановка и уничтожение. Основные методы: onCreate(), onStart(), onResume(), onPause(), onStop(), onRestart(), onDestroy(). Они образуют последовательность, которую важно понимать для корректного управления ресурсами и UI.

Как это работает

Жизненный цикл Activity можно представить как конечный автомат. Каждый метод вызывается в строго определённый момент, и переходы между состояниями всегда происходят в одном порядке. Вот полная цепочка вызовов при нормальной работе:

  1. onCreate() — вызывается при создании активности. Здесь выполняется базовая инициализация: разметка, создание ViewModel, восстановление состояния из savedInstanceState.
  2. onStart() — активность становится видимой для пользователя, но ещё не в фокусе. Здесь можно начинать анимации или обновлять UI.
  3. onResume() — активность получает фокус и готова к взаимодействию. Здесь стоит запускать анимации, слушатели, GPS-трекеры.
  4. onPause() — активность частично видима, но теряет фокус (например, при появлении диалога). Здесь нужно останавливать тяжёлые операции, сохранять временные данные.
  5. onStop() — активность полностью скрыта другой активностью или пользователь вышел на главный экран. Здесь освобождают ресурсы, которые не нужны в фоне.
  6. onRestart() — вызывается перед onStart(), если активность была остановлена и снова возвращается на экран.
  7. onDestroy() — активность уничтожается (пользователь закрыл, система освобождает память). Здесь финальная очистка: отписка от слушателей, закрытие БД.

Пример

Рассмотрим типичный сценарий: пользователь открывает приложение, затем нажимает кнопку «Домой», а потом возвращается обратно.

  • Запуск: onCreate()onStart()onResume()
  • Уход на главный экран: onPause()onStop()
  • Возврат: onRestart()onStart()onResume()

Если активность полностью закрывается (например, через finish()), цепочка будет: onPause()onStop()onDestroy().

Подводные камни

  • Не путайте onPause() и onStop(): onPause() вызывается при частичной видимости, onStop() — при полной. Например, при появлении системного диалога (например, запрос разрешения) вызывается только onPause(), а onStop() — нет.
  • onSaveInstanceState() — не является методом жизненного цикла, но вызывается между onPause() и onStop(). Используйте его для сохранения UI-состояния, а не для хранения данных.
  • Не выполняйте тяжёлые операции в onCreate() — это замедлит запуск. Переносите их в фоновые потоки или в onResume().
  • Помните о повороте экрана: при повороте активность уничтожается и создаётся заново, поэтому все данные нужно сохранять через savedInstanceState или ViewModel.
  • onDestroy() может не вызваться в случае, если система убивает процесс в фоне. Поэтому не полагайтесь на него для критически важных сохранений.

Когда использовать

  • onCreate() — инициализация UI, создание объектов, восстановление состояния.
  • onResume() — запуск анимаций, подписка на слушателей, начало обновления данных.
  • onPause() — остановка анимаций, сохранение черновиков, освобождение ресурсов, которые не нужны при потере фокуса.
  • onStop() — освобождение ресурсов, которые не нужны в фоне, например, отключение GPS.
  • onDestroy() — финальная очистка: отписка от BroadcastReceiver, закрытие курсоров.

Коротко

  • Основные методы: onCreate, onStart, onResume, onPause, onStop, onRestart, onDestroy.
  • Порядок вызовов строго детерминирован: при запуске onCreateonStartonResume, при уходе onPauseonStop, при возврате onRestartonStartonResume.
  • onPause — частичная видимость, onStop — полная скрытость.
  • Используйте onSaveInstanceState для сохранения UI-состояния, а не для данных.
  • При повороте экрана активность пересоздаётся, поэтому данные должны быть восстановлены через savedInstanceState или ViewModel.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы