2017-08-13 75 views
0

您好我有一个关于活动时重新创建保留片段的问题。 我听到一个方法是在onCreate方法使用setRetainFragment(真)。 问题是 - 如何从跟踪私人财产片段的活性,因此我总是在整个活动的生命周期相同的片段对象有何不同?谢谢!Android - 保留片段?

回答

1

setRetainInstance(真):(!而不是破坏)片段的状态仍将跨越配置更改(例如屏幕旋转)。即使配置更改导致“父级”活动被破坏,状态也会保留为 。但是,片段的视图被破坏!

生命周期呼叫:

  • 的onPause() - >的onStop() - > onDestroyView() - > onDetach()
  • onAttach() - > onCreateView() - >调用onStart( ) - >的onResume()

setRetainInstance(假):片段的状态将不被保持的交叉配置更改(默认)。

生命周期呼叫:

  • 的onPause() - >的onStop() - > onDestroyView() - >的onDestroy() - > onDetach()
  • onAttach() - >的onCreate( ) - > onCreateView() - >在onStart() - >的onResume()

重要:setRetainInstance(真)不不适用于背部堆栈上的碎片。 setRetainInstance(真)是长时间运行的操作 不关心配置更改内部片段特别有用。

0

如果你指的私人财产它装置,从而每个活动重新创建与新的私人片段的新的实例时被用于在t = t1时的活动A的实例实施例创建的类中的一个属性被创建的,因此它包含了其所有的私有变量和在t = t2时活性的新实例被创建,所以当你设置setRetainFragment(true)引擎盖下的Android框架保留您的片段而无需重新创建它们并保留它的状态。 您可以参考以下链接了解更多信息Understanding Fragment's setRetainInstance(boolean)