恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

android AMS 详解

  • 首页
  • 资讯中心
  • /
  • android AMS 详解

相关资讯

免费开源的IT资产管理系统 Snipe-IT 实战部署:从零搭建到日常运维只需 3 步 2026/8/15 18:43:08
深度理解CartoCSS选择器:从基础语法到高级地图数据过滤 2026/8/15 18:43:08
iOS越狱入门必备:ios.cfw.guide教你认识4种核心越狱类型 2026/8/15 18:43:08

最新资讯

为什么选择LightAdmin?Java开发者不可错过的CRUD解决方案
领域驱动设计进阶:dddlib中的领域服务与领域事件应用
Nuki Hub vs 官方MQTT:10大核心功能对比,为什么选择ESP32自制方案?
5分钟打造纯净博客:Anatole主题轻巧设计的魅力所在
Daedalus高级玩家指南:控制器映射、金手指与存档管理全攻略
Go 推理服务防止 Goroutine 堆积:超时、背压与降级

今日推荐

内景 空间站内部 中国空间站 太空 内仓
重新定义数据接口:3个突破性场景让通达信数据读取更智能
5大网络安全实操平台,免费练手入门,轻松掌握攻防技能

本周热门

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁
如何快速生成中国车牌图片:Python开源工具完整指南
当 LLM 遇见大文档:主流开源项目如何处理上下文超限

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

android AMS 详解

发布时间:2026/8/15 18:43:08
android AMS 详解 Android AMSActivity Manager Service详解一、AMS 是什么AMSActivity Manager Service是 Android 系统中最核心的服务之一负责管理四大组件Activity、Service、BroadcastReceiver、ContentProvider的生命周期和调度以及进程管理、任务栈管理、权限检查等。它运行在system_server进程中是 Framework 层的核心服务。二、AMS 的核心职责职责说明Activity 管理启动、暂停、恢复、销毁 Activity管理任务栈和返回栈Service 管理启动、绑定、解绑、停止 ServiceBroadcast 管理发送、接收有序/无序广播进程管理启动新进程、回收低优先级进程LRU 列表任务栈管理管理 Task 和 Activity 的启动模式权限检查验证调用者是否有权限执行操作ANR 检测监控主线程响应超时三、AMS 的架构位置┌─────────────────────────────────────┐ │ 应用层 (App) │ ├─────────────────────────────────────┤ │ ActivityManager (Java API) │ ├─────────────────────────────────────┤ │ ActivityManagerNative (AIDL) │ ├─────────────────────────────────────┤ │ ActivityManagerService (system_server) │ │ ├─ ActivityStackSupervisor │ │ ├─ ActivityStack │ │ ├─ ProcessRecord │ │ └─ ... │ ├─────────────────────────────────────┤ │ Zygote 进程孵化 │ ├─────────────────────────────────────┤ │ Linux Kernel │ └─────────────────────────────────────┘四、核心类与数据结构1. ActivityManagerServiceAMS 的主类继承自IActivityManager.Stub通过 Binder 暴露服务接口。2. ActivityStackSupervisor管理所有 Activity 栈的调度器Android 4.4 引入用于支持多窗口和多用户。3. ActivityStack管理一个任务栈维护ActivityRecord列表。4. ActivityRecord代表一个 Activity 实例包含infoActivityInfomanifest 信息task所属的 TaskRecordstate当前状态INITIALIZING、RESUMED、PAUSED 等app绑定的 ProcessRecord5. TaskRecord代表一个任务Task包含多个 ActivityRecord。6. ProcessRecord代表一个运行中的进程包含pid进程 IDuid用户 IDthread应用主线程的 IApplicationThread Binder 代理activities该进程中运行的 Activity 列表五、Activity 启动流程重点以startActivity()为例完整流程如下App (调用方) ↓ Binder IPC ActivityManagerService.startActivity() ↓ ActivityStarter.execute() ← Android 7.0 将启动逻辑抽离到 ActivityStarter ↓ ActivityStackSupervisor.startSpecificActivityLocked() ↓ 判断目标进程是否存在 ├── 否 → startProcessLocked() → 通过 Zygote fork 新进程 │ → 创建 ApplicationThread → attachApplication() │ └── 是 → 直接使用已有进程 ↓ ActivityStack.startActivityLocked() ↓ ActivityStack.resumeTopActivityInnerLocked() ↓ ActivityStackSupervisor.realStartActivityLocked() ↓ Binder IPC (跨进程调用) ApplicationThread.scheduleLaunchActivity() ← 进入目标 App 进程 ↓ ActivityThread.handleLaunchActivity() ↓ Instrumentation.newActivity() ← 反射创建 Activity 实例 ↓ Activity.attach() ← 创建 PhoneWindow、WindowManager ↓ Activity.onCreate() Activity.onStart() Activity.onResume() ↓ WindowManager.addView() ← 将 DecorView 添加到窗口六、进程优先级与 LRU 管理AMS 使用oom_adj值管理进程优先级值越大越容易被杀死优先级oom_adj说明FOREGROUND_APP0前台 ActivityVISIBLE_APP1可见但不可交互PERCEPTIBLE_APP2可感知前台 Service、音乐播放等BACKUP_APP3备份进程HEAVY_WEIGHT_APP4重量级后台SERVICE5后台 ServiceHOME_APP6Home 进程PREVIOUS_APP7上一个前台应用SERVICE_B8长时间运行的 ServiceCACHED_APP9缓存进程空进程AMS 维护LRULeast Recently Used列表当内存不足时按优先级从低到高回收进程。七、启动模式LaunchModeAMS 通过launchMode和Intent Flag控制 Activity 的启动行为模式说明standard每次启动都创建新实例singleTop栈顶复用否则新建singleTask栈内复用清空其上所有 ActivitysingleInstance独占一个任务栈AMS 内部通过ActivityStarter.computeLaunchingTaskFlags()计算最终启动标志。八、ANR 检测机制AMS 在以下场景检测 ANRService ANRServiceTimeout前台 20s后台 200sBroadcast ANRBroadcastTimeout前台 10s后台 60sInput ANR输入事件 5s 未处理ContentProvider ANR发布超时 10s实现原理AMS 通过Handler发送延迟消息若超时前未收到完成回调则触发 ANR。九、AMS 初始化流程system_server启动时初始化 AMSjava// SystemServer.java private void startBootstrapServices() { // 1. 创建 AMS 实例 mActivityManagerService mSystemServiceManager.startService( ActivityManagerService.Lifecycle.class).getService(); // 2. 设置系统进程 mActivityManagerService.setSystemProcess(); } private void startOtherServices() { // 3. 安装系统 ContentProvider mActivityManagerService.installSystemProviders(); // 4. 系统就绪 mActivityManagerService.systemReady(() - { // 启动 Home Activity }); }十、关键源码路径文件说明frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.javaAMS 主类frameworks/base/services/core/java/com/android/server/am/ActivityStackSupervisor.java栈管理器frameworks/base/services/core/java/com/android/server/am/ActivityStack.java任务栈frameworks/base/services/core/java/com/android/server/am/ActivityStarter.java启动逻辑frameworks/base/services/core/java/com/android/server/am/ProcessRecord.java进程记录frameworks/base/services/core/java/com/android/server/am/ActivityRecord.javaActivity 记录frameworks/base/core/java/android/app/ActivityThread.java应用主线程frameworks/base/core/java/android/app/Instrumentation.java生命周期回调十一、AMS 与相关服务的关系┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ AMS │◄───►│ WMS │ │ PMS │ │ (组件调度) │ │ (窗口管理) │ │ (包管理) │ └──────┬──────┘ └─────────────┘ └─────────────┘ │ ▼ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Zygote │ │ BMS │ │ PKMS │ │ (进程孵化) │ │ (电池管理) │ │ (权限管理) │ └─────────────┘ └─────────────┘ └─────────────┘

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号