Выбор ответа Middle MVC, MVP, MVVM, MVI, VIPER обновлено
Зачем Jetpack ViewModel переживает поворот
Вопрос
Что даёт класс ViewModel из Android Jetpack по сравнению с обычным объектом презентации?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Он переживает смену конфигурации (поворот, тему) и очищается, когда экран уходит. Activity пересоздаётся при смене конфигурации, а ViewModel хранится в ViewModelStore и отдаётся новому экземпляру.
Варианты ответа
- Он переживает смерть процесса без дополнительных усилий, сохраняя все свои поля в Bundle
- Он автоматически сохраняет данные в Room при уходе экрана в фон
- Он переживает смену конфигурации (поворот, тему) и очищается, когда экран уходитправильный ответ
- Он выполняет весь свой код в фоновом потоке, не блокируя главный
Разбор
Activity пересоздаётся при смене конфигурации, а ViewModel хранится в ViewModelStore и отдаётся новому экземпляру. При окончательном уходе вызывается onCleared, и viewModelScope отменяет корутины. Смерть процесса ViewModel не переживает: для этого есть SavedStateHandle. Сохранение в базу и фоновые потоки на совести разработчика.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «MVC, MVP, MVVM, MVI, VIPER»
- Выбор паттерна для небольшого приложения
- MVC, MVP, MVVM, MVI, VIPER коротко
- TCA, BLoC, Redux: общий принцип
- Что такое UDF
- Почему MVC в iOS называют Massive View Controller
- Кто за что отвечает в паттернах
- Однонаправленный поток данных в MVI
- Чем MVP отличается от MVVM