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管理 处理 startActivityonCreate 等生命周期回调,维护任务栈。
Service管理 管理 Service 的启动、绑定、停止,处理 bindService() 跨进程调用。
广播管理 注册与分发广播(有序广播、粘性广播),优化 BroadcastQueue 调度。
进程管理 分配进程优先级(Adj 值),触发 lowmemorykiller 回收进程。
**ContentProvider 管理跨应用数据共享,处理 ContentResolver 请求。
ANR监控 检测主线程阻塞(如 5 秒内未响应输入事件),触发 ANR 弹窗。

四、核心模块与工作流程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好多渔鱼好多

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值