返回
以独到眼光洞察 Android Activity 启动流程(第一部分)
Android
2024-02-12 11:45:13
探索 Android 开发核心的奥秘,深入了解 Activity 启动流程的内幕。本文从源代码的角度出发,揭开 Android 9.0 中 Activity 启动的秘密,为您带来一场深入的技术之旅。
9.0 版本下的重大变革
Android 9.0 中的 Activity 启动流程与之前的版本相比,经历了显著的改造和重构。虽然整体流程依然相似,但仔细考察之下,您会发现许多细微的差别和优化。了解这些差异对于掌握 Android 开发至关重要。
启动流程的分类
根据启动 Activity 的时机,我们可以将启动流程分为两类:
- 根 Activity 的启动流程: 当用户第一次启动应用程序时或在某些特定情况下(例如设备重启后),将启动根 Activity。
- 普通 Activity 的启动流程: 在应用程序运行期间,当用户导航到其他 Activity 时,将启动普通 Activity。
根 Activity 的启动流程
根 Activity 的启动流程从 ActivityThread
类的 performLaunchActivity
方法开始。此方法负责创建 Activity 实例、设置其意图和视图层次结构,然后启动它。
关键步骤:
- 创建 Activity 实例: 通过反射创建 Activity 实例。
- 设置意图和视图层次结构: 从意图中提取数据并设置 Activity 的视图层次结构。
- 准备窗口: 创建并配置 Activity 的窗口。
- 附加到窗口管理器: 将 Activity 的窗口附加到窗口管理器,使其可见。
- 执行生命周期回调: 调用
onCreate
、onStart
和onResume
生命周期方法。
普通 Activity 的启动流程
普通 Activity 的启动流程与根 Activity 略有不同。它从 ActivityManager
类的 startActivity
方法开始。
关键步骤:
- 创建 Activity 记录: 在 Activity 堆栈中创建一个新条目。
- 启动 Activity: 调用
ActivityThread
类的performLaunchActivity
方法来启动 Activity。 - 暂停前一个 Activity: 暂停当前处于前台的 Activity。
- 执行生命周期回调: 调用
onCreate
、onStart
和onResume
生命周期方法。
掌握启动流程
通过深入了解 Activity 启动流程,您可以更深入地理解 Android 开发的核心机制。掌握此流程将使您能够诊断和解决启动相关问题,并优化应用程序的启动时间。