为什么要在添加新片段时Android调用片段的onDestroyView?

问题描述 投票:0回答:1

我想知道为什么在未调用onDestroyView时必须调用onDestroy。它基本上会影响onCreateView中完成的初始化,该初始化只需要在片段的整个生命周期中进行一次。有一些依赖于onCreateView中创建的根视图的初始化,但是如果未在该片段中看到该初始化,则不意味着要进行初始化,因为必须将另一个片段附加到活动中。

我知道可以在类中使用属​​性来检查这种重新初始化,但感觉更像是黑客。

android android-fragments
1个回答
0
投票

片段可以经历4个生命周期状态:

  1. 已初始化-由FragmentManager实例化并未处理
  2. 已创建/已开始-片段被添加到FragmentManageronCreateonStart中被调用
  3. 恢复-附加到FragmentManageronResumeonCreateView的片段被称为
  4. 已销毁-从FragmentManageronStoponDestroy中删除的片段将被调用(如果仍继续恢复片段onPause,并且也将onDestroyView预先调用)

可选,您可以通过分离片段来Pause,但不能从FragmentManager中将其删除。这将触发onPauseonDestroyView,并让您在状态2和3之间切换。

这有点令人困惑,但在某些情况下使用,例如ViewPager,在此情况下,您希望保持该片段的活动状态,但在滚动时释放另一页的内存或回收View的页面。

© www.soinside.com 2019 - 2024. All rights reserved.