【Jetpack更新之Fragment】setRetainInstance 被弃用


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

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

【Jetpack更新之Fragment】setRetainInstance 被弃用

老规矩,咱们检查一下 commit log

【Jetpack更新之Fragment】setRetainInstance 被弃用

简略概略z + 2 b u n k一下

SetRetainInstance 测验在 activity 重建时保存状况。但它带来了很多副作用。

随着 ViewModel 的引进,开发者拥有一个特定的 API,用于保存与 Ac{ * e [tivit} N H o M 2y,Frag. r & n – H @ments 和 Navigation 相关联的状况。 这使开发者可以运用正常的,不需求保存 fU . w q 1 ` 8ragment ,从而在保存单个需求的特点时避免d P N了常见的泄漏源,并且可以毁掉保存的状况. , T ] e q(即 ViewModel 的结构, ~ Y ~器和 onCleared 回调)

概况可参见 【~ 5 P & N E q 1 F背上o ] kJetpack】绝不丢掉的状况 androi} ^ 9 K J 6dx SaveSR 1 J ] ztate ViewModel-SaveState 剖析 和 【背上Jetpack之ViewModel】即使您不运用MVVM也要了解ViewModel ——E t y V 7 $ViewModel 的功能鸿沟

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

关于我

我是/ ~ l / b O D Fly_with24

  • 掘金
  • 简书
  • Github

发表评论

提供最优质的资源集合

立即查看 了解详情