ViewModel – абстрактный класс, упрощающий реализацию паттерна
MVVM в Android-приложении.
В общем случае
ViewModel используется следующим образом:
1. Создается наследник класса
ViewModel, который реализует VM-логику в MVVM компоненте.
2. Объект
ViewModel инстанциируется во View-слое (активити или фрагменте) с помощью
delegated property viewModels():
val viewModel: MyViewModel by viewModels()3. Активити или фрагмент использует объект
viewModel для получения обновлений UI.
Объект, созданный с помощью
by viewModels() переживает пересоздание активити и фрагмента при
изменении конфигурации (например при повороте экрана).
Объект
ViewModel уничтожается только в случае, если соответсвующий View-класс не пересоздается. Для активити это происходит, когда вызывается
onDestroy() после вызова метода
finish(). В случае фрагмента – после вызова
onDetach().
При уничтожении объекта
ViewModel вызывается метод
onCleared().