有关活动和片段生命周期的问题

时间:2019-04-14 08:43:59

标签: android android-fragments android-lifecycle

我从ActivityFragment组件跟踪生命周期方法的回调,并且我有很多问题。我需要您的帮助来理解一些要点。

情况1:

一个启动器活动和一个片段,将其填充。当应用启动时,Fragment变为活动状态,用户只能看到Fragment。

Lyfecycle:

  1. 活动:onCreate

  2. 活动:onStart

  3. 片段:onAttach

  4. 片段:onCreate

  5. 片段:onCreateView

  6. 片段:onViewCreated

  7. 片段:onActivityCreated

  8. 活动:onResume

  9. 片段:onResume。

问题:

1)由于活动失去了焦点,2-3之间没有onResume吗?

2)我不认为我理解8-9发生了什么。这似乎是Fragment和Activity之间的某种“切换焦点”。好的,我可以理解:9是关于Fragment出现在前台,聚焦并调用了onResume。但是8是多少?当我加载Fragment(从3开始)时,Activity永远不会处于前台。

情况2:

就像情况1一样,但是现在FragmentActivity已加载,我按了 Home

  1. 活动:onPause
  2. 片段:onPause
  3. 活动:onStop
  4. 片段:onStop

问题:

当我运行它时,我期望另外一种行为。我认为Fragment应该是第一个调用stop方法的人,例如(Fragment onPause-> Fragment onStop-> Activity方法)。为什么这样工作?

情况3:

类似于情况2,活动片段回到了前台。我记得他们俩都拥有Stopped的身份(因为有人叫onStop)。

  1. 活动:onStart
  2. 活动:onResume
  3. 片段:onResume

问题:

我希望1-2,但是我希望 Fragment 调用onStart,因为如果我理解正确的话,onStart在片段可见时调用。为什么没有叫onStart

1 个答案:

答案 0 :(得分:3)

片段和活动生命周期并行工作。一旦创建了活动和片段,它们的生命周期之间的线性依赖关系就结束了。

following figure解释了两个生命周期如何相互联系。

enter image description here

请注意,片段和活动的onStartonResume(以及类似的onStoponPause)是并行执行的,因此不能保证顺序。有时,片段优先于活动,反之亦然。

唯一的保证是,活动的onCreate将始终被首先调用。之后,片段会自行起作用。