目录
一、什么是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 弹窗。 |