Android开发

【Jetpack更新之Fragment】setRetainInstance 被弃用

本文主要是介绍【Jetpack更新之Fragment】setRetainInstance 被弃用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

我们都知道 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
这篇关于【Jetpack更新之Fragment】setRetainInstance 被弃用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!