В
прошлом посте мы разбирали, как
ViewModel переживает пересоздание фрагмента. Закончили на том, что класс
FragmentManagerViewModel сохраняет объекты
ViewModel для фрагмента.
Сам
FragmentManagerViewModel – это
ViewModel, для которого объектом
ViewModelStoreOwner выступает
FragmentActivity.
FragmentActivity наследуется от класса
ComponentActivity, который реализует метод
getViewModelStore(): ViewModelStore интерфейса
ViewModelStoreOwner.
ComponentActivity использует переопределенный метод
Activity.onRetainNonConfigurationInstance() для сохранения объекта
ViewModelStore. Этот метод вызывается между
onStop() и
onDestroy() и возвращает произвольный объект, который сохраняется системой во время пересоздания активити.
При вызове
getViewModelStore(),
ComponentActivity получает сохраненный
ViewModelStore с помощью метода
getLastNonConfigurationInstance().