[译] Android 生命周期备忘录  —  第二部分:多 Activity

在这个系列中:

为了方便查阅,我制作了 PDF 格式备忘录

请注意,图表中显示多个组件(activities,fragments 等)的生命周期时,并排显示的分组事件是并行的。执行焦点可以随时从一个并行事件组切换到另一个,因此并行事件组之间的调用顺序并不能保证。但是,组内的顺序是有保证的。

以下场景并不适用于有着自定义启动模式或任务关联型的 activities 和任务。想要了解更多,详见 Android 开发者官网:任务和返回栈

返回栈 — 场景 1:在 Activity 之间跳转

场景 1:在 Activity 之间跳转

在这种场景下,当一个新 activity 启动时,activity 1 被停止(但没有被销毁),类似于用户在进行跳转(就像按下 "Home" 一样)。

当返回按钮被按下,activity 2 被销毁结束运行。

管理状态

请注意,尽管 onSaveInstanceState 被调用,但是 onRestoreInstanceState 不会被调用。如果在第二个 activity 处于活动状态时配置发生改变,则第一个活动将被销毁并仅在其重新获取焦点时重新创建。这就是保存一个状态的实例很重要的原因。

如果系统杀死应用程序进程以节省资源,这是另一种需要恢复状态的场景。

返回栈 — 场景 2:配置发生变化时返回栈中的 Activities

场景 2:配置发生变化时返回栈中的 Activities

管理状态

保存状态不仅对前台的 activity 很重要。配置发生变化后,栈中的所有的 activities 都需要重新恢复状态来重新创建它们的 UI。

此外,系统几乎可以随时终止你的应用程序进程,因此你应该准备好在任何情况下恢复状态。

返回栈 — 场景 3:应用的进程被终止

当 Android 操作系统需要资源时,它会杀死在后台的应用程序。

场景 3:应用的进程被终止

管理状态

请注意,完整返回栈的状态被保存起来,但为了有效地使用资源,只有在重新创建 activity 时才会恢复 activity。

如果发现译文存在错误或其他需要改进的地方,欢迎到 掘金翻译计划 对译文进行修改并 PR,也可获得相应奖励积分。文章开头的 本文永久链接 即为本文在 GitHub 上的 MarkDown 链接。


掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 AndroidiOS前端后端区块链产品设计人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划官方微博知乎专栏

猜你喜欢

转载自juejin.im/post/5c8e018d51882545ca77d857