Как ViewModel переживает пересоздание активити?

Посмотреть в Telegram: @AndroidSobes/238
В прошлом посте мы разбирали, как ViewModel переживает пересоздание фрагмента. Закончили на том, что класс FragmentManagerViewModel сохраняет объекты ViewModel для фрагмента.

Сам FragmentManagerViewModel – это ViewModel, для которого объектом ViewModelStoreOwner выступает FragmentActivity.

FragmentActivity наследуется от класса ComponentActivity, который реализует метод getViewModelStore(): ViewModelStore интерфейса ViewModelStoreOwner.

ComponentActivity использует переопределенный метод Activity.onRetainNonConfigurationInstance() для сохранения объекта ViewModelStore. Этот метод вызывается между onStop() и onDestroy() и возвращает произвольный объект, который сохраняется системой во время пересоздания активити.

При вызове getViewModelStore(), ComponentActivity получает сохраненный ViewModelStore с помощью метода getLastNonConfigurationInstance().