AndroidX设计架构MVVM之ViewModel生命周期分析

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

本文基于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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值