Выбор ответа Middle Жизненный цикл Activity и Fragment спрашивают часто обновлено

ViewModel и смерть процесса

Вопрос

Приложение в фоне, система убила процесс, пользователь вернулся. Что сохранилось?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Данные из SavedStateHandle/Bundle и стек экранов; ViewModel новая. Android восстанавливает стек Activity и фрагментов и передаёт им сохранённые Bundle, поэтому пользователь видит тот же экран.

Варианты ответа

  1. Данные из SavedStateHandle/Bundle и стек экранов; ViewModel новаяправильный ответ
  2. ViewModel со всеми полями: она хранится в ViewModelStore системы
  3. Ничего: приложение стартует с главного экрана с чистым стеком
  4. Данные в companion object и синглтонах, а экраны создаются заново

Разбор

Android восстанавливает стек Activity и фрагментов и передаёт им сохранённые Bundle, поэтому пользователь видит тот же экран. Но процесс новый: ViewModel и все объекты в памяти, включая companion object и синглтоны, создаются заново. Выживает только сохранённое в Bundle (в том числе SavedStateHandle) и персистентные данные.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.