android9-activity启动流程
Android 9 Activity启动流程分为以下核心阶段,流程涉及多进程协作:
🔄 一、Launcher发起请求(用户操作阶段)
- 点击应用图标
Launcher作为特殊Activity,通过startActivity()
向AMS发送启动请求,触发跨进程通信。 - 创建Intent对象
明确目标Activity类名或Action,封装启动信息。
📡 二、AMS处理阶段(系统服务层)
- AMS验证与进程判断
- 通过PMS验证Activity合法性(匹配Intent)
- 检查目标进程是否存在:
- 进程存在:直接调用
realStartActivityLocked()
启动 - 进程不存在:通过Socket通知Zygote fork新进程
- 进程存在:直接调用
- 暂停当前Activity
AMS通知Launcher暂停(发送PAUSE_ACTIVITY
消息)。
️ 三、进程创建与初始化(Zygote阶段)
- Zygote fork新进程
创建应用进程后,初始化ActivityThread
主线程。 - 绑定应用进程
ActivityThread.attach()
绑定到AMS- 创建
Application
对象并调用onCreate()
。
🚀 四、Activity实例化与生命周期(目标进程)
- AMS发送启动指令
通过ApplicationThread.scheduleLaunchActivity()
跨进程通知。 - 处理启动消息
ActivityThread.H
处理LAUNCH_ACTIVITY
消息- 反射创建Activity实例。
- 生命周期回调
依次执行: 其中onCreate()
完成布局加载(setContentView()
)。
️ 五、界面渲染(WindowManager与View系统)
- 视图树构建
通过LayoutInflater
解析XML布局。 - 测量/布局/绘制
ViewRootImpl
驱动三大流程。 - 同步显示
SurfaceFlinger
合成图层并输出到屏幕。
⚙️ 关键机制说明
阶段 | 核心组件 | 跨进程通信方式 |
---|---|---|
Launcher→AMS | Instrumentation | Binder IPC |
AMS→Zygote | ZygoteProcess | Socket |
AMS→应用 | ApplicationThread | Binder IPC |
流程优化点:若Activity声明
singleTask
等特殊启动模式,AMS会复用已有任务栈。
流程图:
引用链接:
1.Android 9 Activity启动流程 - 51CTO博客
2.《Android Activity启动流程详解》 - CSDN博客
3.Activity 原生启动流程分析 - 微信公众平台
4.Android 9 activity 启动流程 安卓设置启动activity - 51CTO博客
5.Activity 启动流程(一)—— Launcher 阶段 - 掘金开发者社区
6.【鼠】安卓学习杂记(二十九)——Android之Activity启动流程 - 腾讯云
7.Android面试之Activity启动流程简述 - cloud.tencent.com.cn
8.探索Android Activity启动详细流程:从Launcher到新进程的通信与创建 - 泽野漫记
9.安卓Activity启动模式解析:标准模式的运作原理 - 雾霭藏青山
10.【android(安卓)零基础】29.Activity详解 - 哔哩哔哩
11.4.5 Activity的任务栈和启动模式 - 哔哩哔哩
12.手动创建Activity并配置界面 - 好像一直Lucky
13.Android系统是如何启动的?启动流程是什么样的? - 哔哩哔哩
14.【插件化10】面试题:简述Activity的启动流程 - 哔哩哔哩
15.【插件化8】Activity的启动流程详解及手写实现 - 哔哩哔哩
16.Activity 启动流程梳理 - CSDN博客
17.死磕Android_App 启动过程(含 Activity 启动过程) - 潇风寒月
18.Android | Activity 启动流程分析_android activity工作流程-CSDN博客 - CSDN博客
19.Activity启动流程分析(Android 9.0)_android9 activity 调整流程-CSDN博客 - CSDN博客
20.Activity的启动过程(Android 9 API 28) - 51CTO博客
21.android 打开一个activity android启动activity流程 - 51CTO博客
22.首发于 - OpenHarmony小瓜
23.Android Framework源码面试:Activity启动流程 - 小帅
24.Android四大组件的工作过程,原理解析 - Java码农
25.Android应用启动流程分析 - 小帅
26.Android10.0 Acivity 的启动流程源码是怎么样的? - 编程扫地僧
27.【framework】Activity启动流程 - LittleFatSheep