Вопрос на собеседовании · Android-разработчик

Как ViewModel переживает изменение конфигурации и что важно учитывать в lifecycle?

Короткий ответ, ключевые тезисы и ошибки, которых стоит избежать на интервью.

Обновлено 19 августа 2026 г.Встречается почти всегда
Android-разработчикПрофессии и разделы
Короткий ответ

ViewModel хранится в ViewModelStore владельца, поэтому при повороте экрана новая Activity или Fragment получает тот же экземпляр, пока владелец действительно не завершён. Это позволяет держать UI-state и отменять работу в viewModelScope, но ViewModel не является долговременным хранилищем: после убийства процесса системой она создаётся заново.

Для восстановления небольших параметров используют SavedStateHandle, а основные данные получают из устойчивого источника по идентификатору. Потоки состояния собирают только в видимом lifecycle-состоянии, например через repeatOnLifecycle, чтобы экран не получал обновления после остановки и не создавал лишних collectors.

01 · Структура ответа

Что важно сказать интервьюеру

Начните с определения, затем объясните механизм и закончите примером из практики. Для полного ответа раскройте эти тезисы:

Configuration change не равен process death.
ViewModel живёт столько, сколько её ViewModelStore owner.
SavedStateHandle хранит компактное восстанавливаемое состояние.
Flow нужно собирать с учётом lifecycle.

02 · Пример

Как объяснить на практике

Карточка товара хранит productId в SavedStateHandle, а ViewModel строит state из репозитория. После поворота экран не перезапрашивает данные без необходимости, а после process death создаёт ViewModel заново и восстанавливает товар по сохранённому ID.

Не заучивайте формулировку дословно. Свяжите принцип с задачей из собственного проекта — интервьюер почти наверняка попросит уточнить детали реализации и компромиссы.

03 · Ошибки

Чего избегать в ответе

Хранить в SavedStateHandle большой список или ответ API целиком.
Считать, что ViewModel переживает process death без дополнительных мер.
Собирать Flow в lifecycleScope без ограничения периода видимости.

04 · Углубление

Что могут спросить следом

  1. Чем ViewModel отличается от retained Fragment?
  2. Когда применять SavedStateHandle?
  3. Как передать результат между экранами?

Практика ответа

Ответьте вслух, а не про себя

Откроем тренировку сразу на этом вопросе. Выберите грейд, сформулируйте ответ и сравните его с подсказкой.

Потренировать ответ