Android ActivityManagerService(AMS)深度解析
目录
一、什么是AMS?
二、AMS 的架构层次
1. 客户端层
2. 服务层
3. 底层驱动
三、AMS 的主要功能
四、核心模块与工作流程
1. 核心模块
2. Activity 启动流程
3. 进程启动流程
4. 广播分发流程
五、AMS 的启动流程
1. SystemServer 初始化
2. AMS 主入口初始化
六、核心代码解析
1. ActivityStarter.execute()
2. ProcessRecord 管理
七、调试方法
1. ADB 命令
2. 日志过滤
3. 源码调试
4. 性能分析
八、总结
一、什么是AMS?
ActivityManagerService(AMS) 是 Android 系统中负责管理四大组件(Activity、Service、Broadcast、ContentProvider)的核心服务,其核心职责包括:
-
组件生命周期管理:控制 Activity 启动、Service 绑定、广播发送与接收等。
-
进程调度:根据组件状态分配进程优先级(如前台进程、后台进程)。
-
任务栈管理:维护 Activity 的任务栈(Task)与返回栈(Back Stack)。
-
内存监控:通过
LowMemoryKiller
机制回收低优先级进程内存。 -
权限控制:校验组件调用方的权限(如
startActivity
权限检查)。
AMS 是 Android 应用运行的中枢,直接影响多任务切换、应用启动速度和系统稳定性。
二、AMS 的架构层次
1. 客户端层
- 应用进程:通过
ActivityThread
与 AMS 交互(如startActivity
请求)。 - Binder 客户端:
IActivityManager
接口代理(如ActivityManagerProxy
)。
2. 服务层
- AMS 主服务:运行在
system_server
进程,处理跨进程请求。 - 关联服务:
ProcessList
(进程列表)、ActiveServices
(Service 管理)。
3. 底层驱动
- Linux 内核:依赖
Binder
驱动实现 IPC,通过lmkd
进程管理内存回收。
三、AMS 的主要功能
功能模块 | 说明 |
---|---|
Activity管理 | 处理 startActivity 、onCreate 等生命周期回调,维护任务栈。 |
Service管理 | 管理 Service 的启动、绑定、停止,处理 bindService() 跨进程调用。 |
广播管理 | 注册与分发广播(有序广播、粘性广播),优化 BroadcastQueue 调度。 |
进程管理 | 分配进程优先级(Adj 值),触发 lowmemorykiller 回收进程。 |
**ContentProvider | 管理跨应用数据共享,处理 ContentResolver 请求。 |
ANR监控 | 检测主线程阻塞(如 5 秒内未响应输入事件),触发 ANR 弹窗。 |