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()
.