您好我有关于在重新创建活动时保留片段的问题。 我听说有一种方法是在onCreate方法中使用setRetainFragment(true)。 问题是 - 这与跟踪Activity中的私有Fragment属性有什么不同,这样我在整个活动的生命周期中总是拥有相同的Fragment对象?谢谢!
答案 0 :(得分:3)
setRetainInstance(true):片段的状态将在配置更改(例如屏幕旋转)中保留(并且不会被破坏!)。国家将是 即使配置更改导致" parent"要销毁的活动。然而,片段的视图被破坏了!
生命周期调用:
- onPause() - > onStop() - > onDestroyView() - > onDetach()
- onAttach() - > onCreateView() - > onStart() - >的onResume()
setRetainInstance(false):在配置更改期间不会保留片段的状态(默认)。
生命周期调用:
- onPause() - > onStop() - > onDestroyView() - > onDestroy() - > onDetach()
- onAttach() - > onCreate() - > onCreateView() - > onStart() - >的onResume()
重要:setRetainInstance(true)不适用于后端堆栈上的片段。 setRetainInstance(true)对于长时间运行的操作特别有用 内部片段,不关心配置更改。
答案 1 :(得分:1)
如果您指的是私有属性,则表示类中的属性,因此每次重新创建活动时,都会为示例创建一个带有新私有片段的新实例,在t = t1时创建活动A的实例,因此它包含所有它的私有变量在t = t2中创建了一个活动A的新实例,因此当你设置setRetainFragment(true)
时,幕后的Android框架会保留你的碎片而不重新创建它们并保留它的状态。
您可以参考此链接以获取更多信息Understanding Fragment's setRetainInstance(boolean)