卷II 第6章 深入理解ActivityManagerService
卷II 第6章 深入理解ActivityManagerService:剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收,以android-4.0.1_r1源码、全节点机制图和故障恢复证据完成验收。
学习目标
- 能在android-4.0.1_r1单一历史标签内解释剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收,不跨卷拼接文件与接口身份。
- 能操作全节点机制图,让本页 33 个坐标都具备出现、解释、实验和练习四级证据。
- 能使用章专属诊断切片保存入口、PID/TID、对象或状态、正常结果、错误返回与资源释放。
- 能主动制造“只背生命周期回调,遗漏system_server状态机、调度队列和进程死亡清理”,再凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志定位、恢复、复位并以同输入重放。
从一个可失败的问题开始
卷II 第6章 深入理解ActivityManagerService不是类名清单,而是在android-4.0.1_r1中回答:剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收。先预测请求经过的线程、进程与对象所有者,再运行正常样本;如果Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志不能指出首个变化,本页结论仍不可交接。
本章不变量是在android-4.0.1_r1固定输入下,剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收的入口身份、状态拥有者、成功结果、错误返回和资源释放均可重复观察。将“只背生命周期回调,遗漏system_server状态机、调度队列和进程死亡清理”作为反例,必须在同一版本、同一输入下看到确定的错误或状态分叉,并能恢复到基线。
来源范围、历史标签与当前迁移
卷II 第6章 深入理解ActivityManagerService只以卷II公开书目与详细目录界定Android 4.0.1学习范围;未取得原书正文,以下机制解释不沿用原作表述。
AOSP版本与构建号表用于核对2.2/API 8、4.0.1/API 14、4.2.2/API 17及正式源码标签;android-4.0.1_r1源码树提供本页历史机制的一手坐标。当前Android架构文档只用于迁移对照,ART、Treble、稳定AIDL、模块化系统服务和现代构建工具不得倒填为三卷历史实现。
六个机制检查点
↡版本基线在本页用于锁定android-4.0.1_r1的事实坐标与允许输入。、↡正常轨迹在本页用于标出剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收由谁创建、修改与释放状态。、↡首错断点在本页用于保存能复现正常路径的对象身份和时序。、↡对象所有权在本页用于暴露只背生命周期回调,遗漏system_server状态机、调度队列和进程死亡清理发生的第一个边界。、↡恢复条件在本页用于声明故障后重新接收请求所需的恢复条件。、↡回归证据在本页用于让独立读者凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志得到同一结论。。这六项把剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收落到Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志,防止目录词出现却没有运行解释。
先预测,再操作三个专属实验
围绕卷II 第6章 深入理解ActivityManagerService,先预测哪一个对象最先改变、“只背生命周期回调,遗漏system_server状态机、调度队列和进程死亡清理”应在哪个边界暴露,以及恢复后Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中的哪份证据必须回到原值;然后按全节点、版本因果、故障恢复的顺序操作。
1. 全节点机制与可执行探针
从卷II 第6章 深入理解ActivityManagerService的 33 个正式坐标中选择任一节点与处理阶段,比较章专属机制说明和探针;列表完整保留,不截断节点。
正式节点 → 运行机制 → 可执行探针
卷II 第6章 深入理解ActivityManagerService
选择目录节点和处理阶段,检查它怎样进入“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”的真实因果链。
正式目录坐标
33 个节点
第6章 深入理解ActivityManagerService
第6章 深入理解ActivityManagerService在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
当前动作
锁定历史基线
使用Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志检查第6章 深入理解ActivityManagerService的输入、状态变化、错误出口和释放结果
历史坐标
android-4.0.1_r1
platform/frameworks/base @ android-4.0.1_r1
正式目录逐项深读
下面保留 33 个正式目录坐标,但不重复套用实验流程。每个条目只回答它在剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收中的独立责任;共同的定位、单变量注错、恢复和重放动作统一由上方实验与下方练习验收。
第6章 深入理解ActivityManagerService
第6章 深入理解ActivityManagerService在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.1 概述
6.1 概述在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任是界定分析分母和结论边界。先列出它包含的入口、对象和退出条件,再用Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志排除只凭类名或流程图得出的结论。
6.2 初识ActivityManagerService
6.2 初识ActivityManagerService在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任是界定分析分母和结论边界。先列出它包含的入口、对象和退出条件,再用Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志排除只凭类名或流程图得出的结论。
6.2.1 ActivityManagerService的main函数分析
6.2.1 ActivityManagerService的main函数分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.2.2 AMS的setSystemProcess分析
6.2.2 AMS的setSystemProcess分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.2.3 AMS的installSystemProviders函数分析
6.2.3 AMS的installSystemProviders函数分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要追踪数据从入口到持久化或观察者回调的完整闭环。固定URI、文件或账户样本,记录事务、远端资源、通知与关闭结果,再用重复输入验证幂等和泄漏。
6.2.4 AMS的systemReady分析
6.2.4 AMS的systemReady分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.2.5 初识ActivityManagerService总结
6.2.5 初识ActivityManagerService总结在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任是界定分析分母和结论边界。先列出它包含的入口、对象和退出条件,再用Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志排除只凭类名或流程图得出的结论。
6.3 startActivity分析
6.3 startActivity分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.3.1 从am说起
6.3.1 从am说起在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.3.2 AMS的startActivityAndWait函数分析
6.3.2 AMS的startActivityAndWait函数分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.3.3 startActivityLocked分析
6.3.3 startActivityLocked分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.4 Broadcast和BroadcastReceiver分析
6.4 Broadcast和BroadcastReceiver分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.4.1 registerReceiver流程分析
6.4.1 registerReceiver流程分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.4.2 sendBroadcast流程分析
6.4.2 sendBroadcast流程分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.4.3 BROADCAST_INTENT_MSG消息处理函数
6.4.3 BROADCAST_INTENT_MSG消息处理函数在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任属于包扫描、身份验证或持久状态的一环。保留扫描次序、证书、UID、候选集和packages状态,使用升级或冲突样本证明失败不会留下半安装数据。
6.4.4 应用进程处理广播分析
6.4.4 应用进程处理广播分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.4.5 广播处理总结
6.4.5 广播处理总结在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任是界定分析分母和结论边界。先列出它包含的入口、对象和退出条件,再用Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志排除只凭类名或流程图得出的结论。
6.5 startService之按图索骥
6.5 startService之按图索骥在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.5.1 Service知识介绍
6.5.1 Service知识介绍在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.5.2 startService流程图
6.5.2 startService流程图在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.6 AMS中的进程管理
6.6 AMS中的进程管理在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.6.1 Linux进程管理介绍
6.6.1 Linux进程管理介绍在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.6.2 Android中的进程管理介绍
6.6.2 Android中的进程管理介绍在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.6.3 AMS进程管理函数分析
6.6.3 AMS进程管理函数分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.6.4 AMS进程管理总结
6.6.4 AMS进程管理总结在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任是界定分析分母和结论边界。先列出它包含的入口、对象和退出条件,再用Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志排除只凭类名或流程图得出的结论。
6.7 App的Crash处理
6.7 App的Crash处理在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.7.1 应用进程的Crash处理
6.7.1 应用进程的Crash处理在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.7.2 AMS的handleApplicationCrash分析
6.7.2 AMS的handleApplicationCrash分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.7.3 AppDeathRecipient binderDied分析
6.7.3 AppDeathRecipient binderDied分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要沿代理、事务数据、驱动或服务端线程追踪一次请求。记录调用方与接收方身份、同步语义、句柄或对象引用,并用死亡或错误事务验证回收。
6.7.4 App的Crash处理总结
6.7.4 App的Crash处理总结在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任是界定分析分母和结论边界。先列出它包含的入口、对象和退出条件,再用Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志排除只凭类名或流程图得出的结论。
6.8 本章学习指导
6.8 本章学习指导在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
6.9 本章小结
6.9 本章小结在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任是界定分析分母和结论边界。先列出它包含的入口、对象和退出条件,再用Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志排除只凭类名或流程图得出的结论。
章专属复现实验
mkdir -p aosp-android-4.0.1_r1
cd aosp-android-4.0.1_r1
repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
repo sync -c
# 只在可恢复的同版本模拟器或测试机采集
adb shell dumpsys activity
adb logcat -d -s ActivityManager复现卷II 第6章 深入理解ActivityManagerService前先保存主机工具链、manifest与产品目标;android-4.0.1_r1历史分支通常需要隔离的旧工具链环境。与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收有关的诊断命令只在可恢复模拟器或测试机执行,账号、媒体与设备标识使用隔离样本;现代设备输出不得冒充android-4.0.1_r1结果。
练习、答案与四级证据
练习
问题 1:历史边界。 怎样证明本页没有把当前Android实现倒灌到 android-4.0.1_r1?
问题 2:逐节点证据。 本页 33 个正式坐标如何通过出现、解释、实验与练习四级验收?
问题 3:故障恢复。 面对只背生命周期回调,遗漏system_server状态机、调度队列和进程死亡清理,如何确认修复而不是掩盖症状?
术语复核与本章回顾
- 节点覆盖dav-v2-06-activit…
- 最小切片贯通全链路
- 故障实验对比正常与故障边界
- 凭证据完成交接
名词解释
本章出现的专业名词,用大白话再讲一遍。
- 版本基线
版本基线在本页用于锁定android-4.0.1_r1的事实坐标与允许输入。
- 正常轨迹
正常轨迹在本页用于标出剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收由谁创建、修改与释放状态。
- 首错断点
首错断点在本页用于保存能复现正常路径的对象身份和时序。
- 对象所有权
对象所有权在本页用于暴露只背生命周期回调,遗漏system_server状态机、调度队列和进程死亡清理发生的第一个边界。
- 恢复条件
恢复条件在本页用于声明故障后重新接收请求所需的恢复条件。
- 回归证据
回归证据在本页用于让独立读者凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志得到同一结论。
完成卷II 第6章 深入理解ActivityManagerService意味着:能解释剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收,能操作全节点图与诊断切片,能制造只背生命周期回调,遗漏system_server状态机、调度队列和进程死亡清理,还能凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复、复位和交接,而不是只在目录中找到关键词。
阅读导航
← 上一页:卷II 第5章 深入理解PowerManagerService · 下一页:卷II 第7章 深入理解ContentProvider →