原文链接 The Android Lifecycle cheat sheet — part II: Multiple activities。
目录
Back Stack - 场景1:在 activities 之间导航
Back Stack — 场景 2: 返回栈中 Activities 的配置更改
在本系列文章中:
* 第一部分: Activities — 单个 activity 的生命
* 第二部分: 多个 activities — 多个 activities—导航和返回栈 (本文)
* 第三部分: Fragments — activity 和 fragment 的生命周期
* 第四部分: ViewModels, Translucent Activities 和 启动模式
这些图表也可作为PDF格式的备忘表提供,以供快速参考。
请注意,在图表中显示多个组件(activities,fragments 等)的生命周期时,并排出现的分组事件并行运行。执行焦点可以随时从一个并行事件组切换到另一个,因此 不保证并行事件组之间的调用顺序。 但是,保证组内的顺序。
以下方案不适用于已定义自定义启动模式或任务关联的 activities 和 tasks 。有关更多信息,请参阅 Android developer 网站上的 Tasks And Back Stack。
Back Stack - 场景1:在 activities 之间导航
场景1:在 activities 之间导航
在这种情况下,当一个新 activity 被 started 时,activity 1 被 STOPPED(但不被 destroyed),类似于用户导航离开(就像按下了 “Home” 建一样)。
当按下 Back 按钮时,activity 2 将被 destroyed 和 finished。
管理状态
请注意,调用了 onSaveInstanceState
,但没有调用 onRestoreInstanceState
。如果在第二个 activity 处于活动状态时发生配置更改,则只有当第一个 activity 恢复焦点时,才会 destroyed 并重新创建它。这就是为什么保存一个状态的实例很重要。
如果系统杀死 app 进程以节省资源,则这是另一种需要恢复状态的场景。
Back Stack — 场景 2: 返回栈中 Activities 的配置更改
场景 2: 返回栈中 Activities 的配置更改
管理状态
保存状态不仅仅对前台 activity 很重要。栈中的所有 activities 都需要在配置更改后恢复状态以重新创建它们的 UI。
此外,系统几乎可以随时终止您的 app 进程,因此您应该准备好在任何情况下恢复状态。
Back Stack — 场景 3: App 的进程被杀死
当 Android 操作系统需要资源时,它会杀死后台的 apps。
场景 3: App 的进程被杀死
管理状态
请注意,保存完整返回栈的状态,但为了有效地使用资源,activities 只有在被重新创建时才会被恢复。