我想知道为什么在未调用onDestroyView
时必须调用onDestroy
。它基本上会影响onCreateView
中完成的初始化,该初始化只需要在片段的整个生命周期中进行一次。有一些依赖于onCreateView
中创建的根视图的初始化,但是如果未在该片段中看到该初始化,则不意味着要进行初始化,因为必须将另一个片段附加到活动中。
我知道可以在类中使用属性来检查这种重新初始化,但感觉更像是黑客。
片段可以经历4个生命周期状态:
FragmentManager
实例化并未处理FragmentManager
,onCreate
和onStart
中被调用FragmentManager
,onResume
和onCreateView
的片段被称为FragmentManager
,onStop
和onDestroy
中删除的片段将被调用(如果仍继续恢复片段onPause
,并且也将onDestroyView
预先调用)可选,您可以通过分离片段来Pause
,但不能从FragmentManager
中将其删除。这将触发onPause
和onDestroyView
,并让您在状态2和3之间切换。
这有点令人困惑,但在某些情况下使用,例如ViewPager
,在此情况下,您希望保持该片段的活动状态,但在滚动时释放另一页的内存或回收View
的页面。