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会不会重建,经测试不会重建,达到效果