MVVM框架下横竖屏切换fragment数据保存问题

MVVM框架下的ViewModel天生就是为横竖屏切换而生,在不添加android:configChanges="orientation|keyboardHidden|screenSize"到AndroidManifest中的activity下的情况下,在横竖屏切换时Activity会销毁重建,Fragment也会销毁重建。

在单Activity+多fragment架构下,横竖屏切换的时候fragment不但操作的数据保存不方便,而且还可能出现Fragment重复创建的问题。
解决方案:
在fragment的 onCreate()方法中使用setRetainInstance(true);
这样子fragment就不会被真正销毁,即不会走onDestroy,不会走onCreate,并且发现fragment实例跟之前创建的是同一个。

但是此时在Activity重建时由于会执行Activity初始化的生命周期,即涉及到创建activity 的根fragment逻辑,故会出现重复创建了跟fragment的问题。

在Activity创建跟Fragment前判断根fragment是否已存在,存在则不要重复创建。

综上解决方案是:
步骤1.在fragment的 onCreate()方法中使用setRetainInstance(true);
步骤2.在Activity创建跟Fragment前判断根fragment是否已存在,存在则不要重复创建。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值