Выбор ответа Middle Навигация обновлено
ViewModel и NavBackStackEntry
Вопрос
Сколько живёт ViewModel, полученная через hiltViewModel() внутри composable<Article> { }?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Пока запись NavBackStackEntry экрана есть в стеке. Каждая запись back stack это ViewModelStoreOwner, и ViewModel экрана привязана к ней.
Варианты ответа
- Всё время работы приложения, как синглтон Hilt
- До следующей рекомпозиции экрана статьи
- Пока запись
NavBackStackEntryэкрана есть в стекеправильный ответ - Пока жива Activity, независимо от того, открыт ли экран
Разбор
Каждая запись back stack это ViewModelStoreOwner, и ViewModel экрана привязана к ней. Если перейти дальше, запись остаётся в стеке, и ViewModel жива; когда экран сняли со стека, ViewModel очищается. Для общей ViewModel потока экранов в качестве владельца берут запись вложенного графа, для общей на всё приложение Activity.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.