关于 Activity 和 Fragment 生命周期的问题
Questions about Activity and Fragment lifecycle
我从 Activity
和 Fragment
组件跟踪生命周期方法的回调,我有很多问题。我需要你帮助理解一些要点。
情况一:
一个 launcher Activity 和一个 Fragment,填充它。当应用程序启动时,Fragment 变为活动状态,用户只能看到 Fragment。
生命周期:
Activity: onCreate
Activity: onStart
片段:onAttach
片段:onCreate
片段:onCreateView
片段:onViewCreated
片段:在Activity创建
Activity: onResume
片段:onResume.
问题:
1) 2 - 3之间没有onResume
,因为Activity失去焦点?
2) 我不认为我理解 8 - 9 发生了什么。它似乎是 Fragment 和 Activity 之间的某种 "switch focus"。好的,我明白了:9是关于Fragment来到前台,聚焦并调用onResume
。但是8是什么?当我加载 Fragment(从 3 开始)时,Activity 永远不会出现在前台。
情况二:
像情况 1,但现在 Fragment
和 Activity
已加载,我按了 Home:
- Activity: onPause
- 片段:onPause
- Activity: onStop
- 片段:onStop
问题:
当我 运行 它时,我期待另一种行为。我认为 Fragment 应该是第一个调用停止方法的人,比如 (Fragment onPause -> Fragment onStop -> Activity 方法)。为什么会这样?
情况三:
和情况2一样,Activity和Fragment回到前台。我记得,他们都有 Stopped
状态(因为 onStop
被调用)。
- Activity: onStart
- Activity: onResume
- 片段:onResume
问题:
我预计 1-2,但我预计 Fragment 调用 onStart
,因为,如果我理解正确,onStart
在片段变为可见的。为什么 onStart
没有被调用?
片段和 Activity 生命周期并行工作。一旦创建 activity 和片段,它们的生命周期之间的线性依赖就会结束。
following figure 解释了这两个生命周期是如何相互关联的。
请注意,片段和 activity 的 onStart
和 onResume
(以及类似地,onStop
和 onPause
)并行执行,并且没有保证订单。有时片段会优先于 activity,反之亦然。
唯一的保证是 activity 的 onCreate
总是首先被调用。之后fragment就自己行动了。
我从 Activity
和 Fragment
组件跟踪生命周期方法的回调,我有很多问题。我需要你帮助理解一些要点。
情况一:
一个 launcher Activity 和一个 Fragment,填充它。当应用程序启动时,Fragment 变为活动状态,用户只能看到 Fragment。
生命周期:
Activity: onCreate
Activity: onStart
片段:onAttach
片段:onCreate
片段:onCreateView
片段:onViewCreated
片段:在Activity创建
Activity: onResume
片段:onResume.
问题:
1) 2 - 3之间没有onResume
,因为Activity失去焦点?
2) 我不认为我理解 8 - 9 发生了什么。它似乎是 Fragment 和 Activity 之间的某种 "switch focus"。好的,我明白了:9是关于Fragment来到前台,聚焦并调用onResume
。但是8是什么?当我加载 Fragment(从 3 开始)时,Activity 永远不会出现在前台。
情况二:
像情况 1,但现在 Fragment
和 Activity
已加载,我按了 Home:
- Activity: onPause
- 片段:onPause
- Activity: onStop
- 片段:onStop
问题:
当我 运行 它时,我期待另一种行为。我认为 Fragment 应该是第一个调用停止方法的人,比如 (Fragment onPause -> Fragment onStop -> Activity 方法)。为什么会这样?
情况三:
和情况2一样,Activity和Fragment回到前台。我记得,他们都有 Stopped
状态(因为 onStop
被调用)。
- Activity: onStart
- Activity: onResume
- 片段:onResume
问题:
我预计 1-2,但我预计 Fragment 调用 onStart
,因为,如果我理解正确,onStart
在片段变为可见的。为什么 onStart
没有被调用?
片段和 Activity 生命周期并行工作。一旦创建 activity 和片段,它们的生命周期之间的线性依赖就会结束。
following figure 解释了这两个生命周期是如何相互关联的。
请注意,片段和 activity 的 onStart
和 onResume
(以及类似地,onStop
和 onPause
)并行执行,并且没有保证订单。有时片段会优先于 activity,反之亦然。
唯一的保证是 activity 的 onCreate
总是首先被调用。之后fragment就自己行动了。