我指的是为什么使用 Fragment#setRetainInstance(boolean)?
我这么问的原因是为了Activity
处理轮换,官方活动文档鼓励我们在轮换期间让Activity
关机和重启。
android:configChanges 列出活动将自行处理的配置更改。当运行时发生配置更改时,默认情况下会关闭并重新启动 Activity,但使用此属性声明配置会阻止 Activity 重新启动。相反,活动保持运行并调用其 onConfigurationChanged() 方法。注意:应避免使用此属性,并且仅将其用作最后的手段。有关如何正确处理由于配置更改而重新启动的更多信息,请阅读处理运行时更改。
任何更改此 Activity 默认行为的尝试似乎都是不好的做法。为了避免Activity在重启过程中重新加载耗时的数据结构,我们使用了onRetainNonConfigurationInstance
and getLastNonConfigurationInstance
。-官方处理运行时更改
但是,当谈到在 Fragment 中处理轮换时,Google 是否给了我们不同的建议?他们不希望我们关闭并重新启动 Fragment 吗?
公共对象 onRetainNonConfigurationInstance ()
此方法在 API 级别 13 中已弃用。请改用新的 Fragment API setRetainInstance(boolean);这也可以通过 Android 兼容包在旧平台上使用。
- 为什么 Google 鼓励我们在轮换期间关闭并重启 Activity,而鼓励我们在轮换期间保留 Fragment?
- 如果
setRetainInstance(true)
擅长处理轮换,为什么 Google 不将其作为 Fragment 的默认行为?