activity冷启动流程
时间: 2025-04-24 19:47:55 浏览: 24
### Android Activity 冷启动流程
#### 1. 启动请求发起
当用户点击应用程序图标或其他方式触发应用启动时,AMS (Activity Manager Service) 收到启动请求。此时会调用 `Activity.java` 中的 `startActivity(Intent intent)` 方法[^1]。
```java
public void startActivity(Intent intent) {
this.startActivity(intent, null);
}
```
#### 2. 主线程消息处理
AMS 将启动命令封装成 `H.LAUNCH_ACTIVITY` 消息发送给目标进程的消息队列。该进程中 Looper 循环不断轮询消息队列中的消息,在检测到此特定类型的消息后将其交给 Handler 进行分发处理。最终由主线程负责接收这条消息并执行相应的操作[^2]。
#### 3. Activity 实例化与初始化
接收到 `H.LAUNCH_ACTIVITY` 消息之后,系统会在主线程上调用 `handleLaunchActivity()` 函数来完成实际的任务。在此函数内部:
- 首先通过 `performLaunchActivity(r, customIntent)` 来创建新的 Activity 对象实例[^3];
- 接着调用 `Instrumentation.newActivity` 创建具体的 Activity 类型对象;
- 然后再调用 `attach(Context context,...)` 方法绑定必要的环境信息(如 Context),使新创建的对象能够正常工作;
- 最终依次回调各个生命周期方法 (`onCreate`, `onStart`) 完成视图加载和其他准备工作。
#### 4. 生命周期管理
一旦成功创建了 Activity 并完成了初始设置,则继续调用其 `resume` 状态对应的生命周期方法——即 `performResume()` ,从而让这个组件正式进入前台可见状态并与用户交互。
```java
private void handleLaunchActivity(ActivityClientRecord r, ...) {
final Activity a = performLaunchActivity(r, ...);
if (a != null) {
a.performResume();
}
}
```
#### 5. 渲染绘制
最后一步是 UI 的渲染过程,这涉及到 View 层级结构构建、布局计算以及绘图等一系列复杂的工作流。这些都发生在上述提到的方法被调用完毕之后,确保所有资源准备就绪再显示给用户看。
阅读全文
相关推荐















