【Jetpack更新之Fragment】setRetainInstance 被弃用,那么 fragment 是如何保存状态的?...

随着Android Jetpack的更新,`setRetainInstance`方法已被弃用。官方推荐使用SaveState、ViewModel等API来保留Activity、Fragment和Navigation的状态,以避免内存泄漏并保持逻辑一致性。本文探讨了Fragment状态保存的新方法,并提到了相关资源供进一步学习。
部署运行你感兴趣的模型镜像

我们都知道 fragment 中的 setRetainInstance 用于控制是否在 activity 保留 fragment 实例,具体内容可参见 WanAndroid 的每日一问:Fragment 是如何被存储与恢复的?

但是该方法已于 androidx fragment 1.3.0-alpha01 弃用了

老规矩,我们查看一下 commit log

简单概况一下

SetRetainInstance 尝试在 activity 重建时保存状态。但它带来了很多副作用。

随着 ViewModel 的引入,开发者拥有一个特定的 API,用于保留与 Activity,Fragments 和 Navigation 相关联的状态。这使开发者可以使用正常的,不需要保留 fragment ,从而在保存单个需要的属性时避免了常见的泄漏源,并且可以销毁保存的状态(即 ViewModel 的构造器和 onCleared 回调)

详情可参见 【背上 Jetpack】绝不丢失的状态 androidx SaveState ViewModel-SaveState 分析 和 【背上 Jetpack 之 ViewModel】即使您不使用 MVVM 也要了解 ViewModel ——ViewModel 的职能边界

从这个改动可以看出官方正致力于保证逻辑的单一性,状态保存交给 ViewModel ,减少这种特殊的例外情况,从而消除一些不符合预期的问题

关于我

我是 Fly_with24

  • 掘金

  • 简书

  • Github

欢迎关注我的公众号

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值