Выбор ответа Middle MVC, MVP, MVVM, MVI, VIPER обновлено

Зачем Jetpack ViewModel переживает поворот

Вопрос

Что даёт класс ViewModel из Android Jetpack по сравнению с обычным объектом презентации?

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

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

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

Коротко

Правильный ответ: Он переживает смену конфигурации (поворот, тему) и очищается, когда экран уходит. Activity пересоздаётся при смене конфигурации, а ViewModel хранится в ViewModelStore и отдаётся новому экземпляру.

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

  1. Он переживает смерть процесса без дополнительных усилий, сохраняя все свои поля в Bundle
  2. Он автоматически сохраняет данные в Room при уходе экрана в фон
  3. Он переживает смену конфигурации (поворот, тему) и очищается, когда экран уходитправильный ответ
  4. Он выполняет весь свой код в фоновом потоке, не блокируя главный

Разбор

Activity пересоздаётся при смене конфигурации, а ViewModel хранится в ViewModelStore и отдаётся новому экземпляру. При окончательном уходе вызывается onCleared, и viewModelScope отменяет корутины. Смерть процесса ViewModel не переживает: для этого есть SavedStateHandle. Сохранение в базу и фоновые потоки на совести разработчика.

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

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