Выбор ответа Middle Навигация обновлено

ViewModel и NavBackStackEntry

Вопрос

Сколько живёт ViewModel, полученная через hiltViewModel() внутри composable<Article> { }?

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

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

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

Коротко

Правильный ответ: Пока запись NavBackStackEntry экрана есть в стеке. Каждая запись back stack это ViewModelStoreOwner, и ViewModel экрана привязана к ней.

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

  1. Всё время работы приложения, как синглтон Hilt
  2. До следующей рекомпозиции экрана статьи
  3. Пока запись NavBackStackEntry экрана есть в стекеправильный ответ
  4. Пока жива Activity, независимо от того, открыт ли экран

Разбор

Каждая запись back stack это ViewModelStoreOwner, и ViewModel экрана привязана к ней. Если перейти дальше, запись остаётся в стеке, и ViewModel жива; когда экран сняли со стека, ViewModel очищается. Для общей ViewModel потока экранов в качестве владельца берут запись вложенного графа, для общей на всё приложение Activity.

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

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

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