当前位置: 首页 > news >正文

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 弹窗。

四、核心模块与工作流程

http://www.xdnf.cn/news/146341.html

相关文章:

  • PostgreSQL使用LIKE右模糊没有走索引分析验证
  • 【高频考点精讲】ES6 String的新增方法,处理字符串更方便了
  • CentOS系统防火墙服务介绍
  • 【大模型理解消化的搅碎机】基于6000种商品CSV表格的知识图谱构建
  • 计组1.2.4——计算机系统的层次结构
  • Allegro23.1新功能之OrcadX平台使用操作指导
  • (三) Trae 调试C++ 基本概念
  • 【虚拟机安装Ubuntu 24 LTS】 MobaXterm 连接Access denied错误-安装进度卡“正在传输文件”-固定内网ip
  • 反爬虫机制中的验证码识别:类型、技术难点与应对策略
  • 艾德文·卡特姆:将画布变成屏幕,开启CGI时代
  • ‌CDGP|企业数据安全治理:制定落地战略,护航数字经济高质量发展
  • 求职意向商务/BD简历模板
  • DPIN河内AI+DePIN峰会:共绘蓝图,加速构建去中心化AI基础设施新生态
  • 算法中的数学:gcd与lcm
  • 诗词大会竞赛主持稿串词(二)
  • CKESC SKY 6S 50A_4S 60A 电调专业测评
  • 常见网络安全攻击类型深度剖析(一):恶意软件攻击——病毒、蠕虫、木马的原理与防范
  • 51单片机中断
  • 【补题】Codeforces Round 789 (Div. 1)C. Tokitsukaze and Two Colorful Tapes
  • 智慧党建解决方案-1PPT(40页)
  • ThreadLocal详解与实战指南
  • LabVIEW老旧设备控制
  • Apache Spark 源码解析
  • 线程池配置实现多线程快速处理批量数据
  • 动态ip与静态ip的概念、区别、应用场景
  • 统计文件中单词出现的次数并累计
  • 【玩泰山派】7、玩linux桌面环境xfce - (4)使用gstreamer
  • 点云从入门到精通技术详解100篇-基于二次误差和高斯混合模型的点云配准算法
  • 【DE-III】基于细节增强的模态内和模态间交互的视听情感识别
  • LabVIEW轨道交通动力系统性能监控