关于Activity和Fragment生命周期的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Activity和Fragment生命周期的问题相关的知识,希望对你有一定的参考价值。
我从Activity
和Fragment
组件跟踪生命周期方法的回调,我有很多问题。我需要你帮助理解一些观点。
情况1:
一个具有一个片段的启动器活动,填充它。当应用程序启动时,Fragment变为活动状态,用户只能看到Fragment。
Lyfecycle:
- 活动:onCreate
- 活动:onStart
- 摘录:onAttach
- 片段:onCreate
- 片段:onCreateView
- 片段:onViewCreated
- 片段:onActivityCreated
- 活动:onResume
- 片段:onResume。
问题:
1)2 - 3之间没有onResume
,因为活动失去焦点?
2)我不认为我理解8-9发生了什么。看起来像Fragment和Activity之间的某种“切换焦点”。好吧,我能理解:9是关于片段来到前台,采取焦点和onResume
被称为。但是什么是8?当我加载Fragment(从3开始)时,Activity永远不会出现在前台。
情况2:
像情况1,但现在Fragment
和Activity
加载,我按下Home:
- 活动:onPause
- 片段:onPause
- 活动:onStop
- 片段:onStop
问题:
当我运行它时,我期待另一种行为。我认为Fragment应该是第一个调用stop方法的人,比如(Fragment onPause - > Fragment onStop - > Activity方法)。为什么这样工作?
情况3:
与情况2一样,带片段的活动又回到了前台。我记得,他们都有Stopped
状态(因为onStop
被称为)。
- 活动:onStart
- 活动:onResume
- 片段:onResume
问题:
我期待1-2,但我希望Fragment调用onStart
,因为,如果我理解它是正确的,onStart
在片段变得可见时调用。为什么没有叫onStart
?
片段和活动生命周期并行工作。一旦活动和片段都被创建,它们的生命周期之间的线性依赖就会结束。
following figure解释了两个生命周期是如何相互关联的。
请注意,片段和活动的onStart
和onResume
(以及类似地,onStop
和onPause
)并行执行,并且不保证顺序。有时片段优先于活动,反之亦然。
唯一的保证是活动的onCreate
将始终首先被调用。在那之后,片段自行发挥作用。
以上是关于关于Activity和Fragment生命周期的问题的主要内容,如果未能解决你的问题,请参考以下文章