本文基于ViewModel 2.1.0
先来一张ViewModel生命周期图
原文
AndroidX设计架构MVVM之ViewModel创建流程原理分析
AndroidX设计架构MVVM之ViewModel生命周期分析
AndroidX设计架构MVVM之LiveDatal生命周期及数据监听分析
AndroidX设计架构MVVM之DataBinding搭配LiveData的分析
AndroidX设计架构MVVM之DataBinding+ViewModel+LiveData

从google官网获取的ViewModel生命周期图,图中显示activity在横竖屏旋转重建时ViewModel一直存在内存中
ViewModel创建流程原理分析的总结中提到一个activity中只有一个ViewModelStore,ViewModelStore中保存此activity中所有ViewModel。
那么根据ViewModel的生命周期图来看看,当activity在生命周期onDestroy中是如何处理ViewModel的。
@Override
protected void onDestroy() {
super.onDestroy();
//注意点1
if (mViewModelStore != null && !isChangingConfigurations()) {
//注意点2
mViewModelStore.clear();
}
mFragments.dispatchDestroy();
}
注意点1:关键点isChangingConfigurations(),从名字上就知道是判断当前是否为切换横竖屏。
public boolean isChangingConfigurations() {
return mChangingConfigurations;
}
/** true if the activity is being destroyed in order to recreate it with a new configuration */
/*package*/ bo

本文深入剖析Android架构中MVVM模式下ViewModel的工作机制,详细解读ViewModel如何在Activity旋转时保持状态,避免数据重复加载。文章阐述了ViewModelStore在Activity重建过程中的保存与恢复流程,揭示了mChangingConfigurations属性在配置变化时的作用。
4460

被折叠的 条评论
为什么被折叠?



