ViewModel长生命周期
当activity销毁时会调用retainNonConfigurationInstances()方法(这个方法会在activity即将销毁时调用)用以保存ViewModel,当然ViewModel的保存只会在ComponentActivity中存在。保存的过程是在ComponentActivity.onRetainNonConfigurationInstances()方法中发生的。
这些内容被保存在了ActivityClientRecord的lastNonConfigurationInstances属性中。
关于viewmodel的恢复是在ensureViewModelStore方法中。该方法会在activity开始生命周期时调用,如果在生命周期之前获取,该方法内部也会判断是否已经获取过viewmodel,如果没有获取还会重新获取。