Androidx防止Fragment重建

结论
在acvitity的onCreate方法中,super.onCreate这一行前,使用

savedInstanceState?.getBundle("androidx.lifecycle.BundlableSavedStateRegistry.key")?.remove("android:support:fragments")

分析
在androidx之前,一般我们防止Fragment重建是在actvitity的onCreate方法中使用savedInstanceState?.remove(“android:support:fragments”)或者savedInstanceState?.remove(“android:fragments”)。但是在androidx中,使用这两行代码不生效,但是看FragmentActivity中的FRAGMENT_TAG还是android:support:fragments,那为什么会不生效呢,后来点进去看发现

在这里插入图片描述
看起来像是包了一层子bundle,让子bundle去控制重建。尝试了一下在这个子bundle里remove key,savedInstanceState?.getBundle(“androidx.lifecycle.BundlableSavedStateRegistry.key”)?.remove(“android:support:fragments”)

然后测试后台进程回收恢复的情况Fragment会不会重建,经测试不会重建,达到效果

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐