Выбор ответа Middle ViewModel и сохранение состояния спрашивают часто обновлено

Почему ViewModel переживает поворот

Вопрос

Почему ViewModel не пересоздаётся при повороте экрана?

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

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

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

Коротко

Правильный ответ: Она в ViewModelStore, который переходит новой Activity при повороте. ViewModelStore принадлежит владельцу (Activity, Fragment, NavBackStackEntry).

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

  1. Она сериализуется в Bundle при повороте и восстанавливается в новой Activity
  2. Она хранится как синглтон приложения, пока жив процесс и её экран
  3. Система не пересоздаёт Activity при повороте, если у неё есть ViewModel
  4. Она в ViewModelStore, который переходит новой Activity при поворотеправильный ответ

Разбор

ViewModelStore принадлежит владельцу (Activity, Fragment, NavBackStackEntry). При смене конфигурации он передаётся новому экземпляру как non-configuration instance, и провайдер возвращает тот же объект. Сериализации нет, поэтому ViewModel не переживает смерть процесса. Это не синглтон приложения: у каждого экрана своя, и Activity при повороте пересоздаётся как обычно.

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

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

Термины по теме