Android-保留片段吗?

use*_*024 5 lifecycle android fragment android-activity

嗨,我有一个关于在重新创建Activity时保留片段的问题。我听说一种方法是在onCreate方法中使用setRetainFragment(true)。问题是-与在Activity中跟踪私有Fragment属性有什么不同,以便在活动的整个生命周期中我始终拥有相同的Fragment对象?谢谢!

Pra*_*tha 5

setRetainInstance(true):片段的状态将在配置更改(例如屏幕旋转)时保留(而不是销毁!)。即使配置更改导致“父”活动被破坏,该状态也将保留。但是,片段视图被破坏了!

生命周期调用:

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

setRetainInstance(false):分段的状态不会在配置更改中保留(默认)。

生命周期调用:

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

重要说明:setRetainInstance(true)不适用于后堆栈上的片段。setRetainInstance(true)对于不关心配置更改的Fragment中长时间运行的操作特别有用。