2017-08-13 76 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)