卷II 第6章 深入理解ActivityManagerService
卷II 第6章 深入理解ActivityManagerService:剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收,以android-4.0.1_r1源码、全节点机制图和故障恢复证据完成验收。
从一个可失败的问题开始
卷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、模块化系统服务和现代构建工具不得倒填为三卷历史实现。
六个机制检查点
、、、、、。 这六项把剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收落到Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志,防止目录词出现却没有运行解释。
正式目录逐项深读
第6章 深入理解ActivityManagerService
第6章 深入理解ActivityManagerService在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
处理 第6章 深入理解ActivityManagerService 时先执行“锁定历史基线”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“复现正常轨迹”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 第6章 深入理解ActivityManagerService 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.1 概述
6.1 概述在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任是界定分析分母和结论边界。先列出它包含的入口、对象和退出条件,再用Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志排除只凭类名或流程图得出的结论。
处理 6.1 概述 时先执行“复现正常轨迹”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“注入单一故障”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 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 初识ActivityManagerService 时先执行“注入单一故障”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“定位首个分叉”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 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.1 ActivityManagerService的main函数分析 时先执行“定位首个分叉”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“恢复同输入重放”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.2.1 ActivityManagerService的main函数分析 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.2.2 AMS的setSystemProcess分析
6.2.2 AMS的setSystemProcess分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
处理 6.2.2 AMS的setSystemProcess分析 时先执行“恢复同输入重放”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“锁定历史基线”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.2.2 AMS的setSystemProcess分析 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.2.3 AMS的installSystemProviders函数分析
6.2.3 AMS的installSystemProviders函数分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要追踪数据从入口到持久化或观察者回调的完整闭环。固定URI、文件或账户样本,记录事务、远端资源、通知与关闭结果,再用重复输入验证幂等和泄漏。
处理 6.2.3 AMS的installSystemProviders函数分析 时先执行“锁定历史基线”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“复现正常轨迹”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.2.3 AMS的installSystemProviders函数分析 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.2.4 AMS的systemReady分析
6.2.4 AMS的systemReady分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要翻译成一个可推翻的运行合同:明确入口、线程或进程、状态拥有者、正常结果和首个错误返回,再由Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志复核。
处理 6.2.4 AMS的systemReady分析 时先执行“复现正常轨迹”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“注入单一故障”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.2.4 AMS的systemReady分析 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.2.5 初识ActivityManagerService总结
6.2.5 初识ActivityManagerService总结在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任是界定分析分母和结论边界。先列出它包含的入口、对象和退出条件,再用Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志排除只凭类名或流程图得出的结论。
处理 6.2.5 初识ActivityManagerService总结 时先执行“注入单一故障”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“定位首个分叉”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 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 startActivity分析 时先执行“定位首个分叉”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“恢复同输入重放”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.3 startActivity分析 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.3.1 从am说起
6.3.1 从am说起在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要翻译成一个可推翻的运行合同:明确入口、线程或进程、状态拥有者、正常结果和首个错误返回,再由Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志复核。
处理 6.3.1 从am说起 时先执行“恢复同输入重放”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“锁定历史基线”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.3.1 从am说起 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.3.2 AMS的startActivityAndWait函数分析
6.3.2 AMS的startActivityAndWait函数分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
处理 6.3.2 AMS的startActivityAndWait函数分析 时先执行“锁定历史基线”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“复现正常轨迹”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.3.2 AMS的startActivityAndWait函数分析 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.3.3 startActivityLocked分析
6.3.3 startActivityLocked分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
处理 6.3.3 startActivityLocked分析 时先执行“复现正常轨迹”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“注入单一故障”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.3.3 startActivityLocked分析 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.4 Broadcast和BroadcastReceiver分析
6.4 Broadcast和BroadcastReceiver分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
处理 6.4 Broadcast和BroadcastReceiver分析 时先执行“注入单一故障”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“定位首个分叉”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.4 Broadcast和BroadcastReceiver分析 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.4.1 registerReceiver流程分析
6.4.1 registerReceiver流程分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要翻译成一个可推翻的运行合同:明确入口、线程或进程、状态拥有者、正常结果和首个错误返回,再由Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志复核。
处理 6.4.1 registerReceiver流程分析 时先执行“定位首个分叉”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“恢复同输入重放”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.4.1 registerReceiver流程分析 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.4.2 sendBroadcast流程分析
6.4.2 sendBroadcast流程分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
处理 6.4.2 sendBroadcast流程分析 时先执行“恢复同输入重放”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“锁定历史基线”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.4.2 sendBroadcast流程分析 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.4.3 BROADCAST_INTENT_MSG消息处理函数
6.4.3 BROADCAST_INTENT_MSG消息处理函数在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任属于包扫描、身份验证或持久状态的一环。保留扫描次序、证书、UID、候选集和packages状态,使用升级或冲突样本证明失败不会留下半安装数据。
处理 6.4.3 BROADCAST_INTENT_MSG消息处理函数 时先执行“锁定历史基线”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“复现正常轨迹”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.4.3 BROADCAST_INTENT_MSG消息处理函数 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.4.4 应用进程处理广播分析
6.4.4 应用进程处理广播分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
处理 6.4.4 应用进程处理广播分析 时先执行“复现正常轨迹”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“注入单一故障”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.4.4 应用进程处理广播分析 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.4.5 广播处理总结
6.4.5 广播处理总结在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任是界定分析分母和结论边界。先列出它包含的入口、对象和退出条件,再用Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志排除只凭类名或流程图得出的结论。
处理 6.4.5 广播处理总结 时先执行“注入单一故障”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“定位首个分叉”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 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 startService之按图索骥 时先执行“定位首个分叉”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“恢复同输入重放”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.5 startService之按图索骥 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.5.1 Service知识介绍
6.5.1 Service知识介绍在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
处理 6.5.1 Service知识介绍 时先执行“恢复同输入重放”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“锁定历史基线”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.5.1 Service知识介绍 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.5.2 startService流程图
6.5.2 startService流程图在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
处理 6.5.2 startService流程图 时先执行“锁定历史基线”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“复现正常轨迹”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.5.2 startService流程图 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.6 AMS中的进程管理
6.6 AMS中的进程管理在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
处理 6.6 AMS中的进程管理 时先执行“复现正常轨迹”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“注入单一故障”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.6 AMS中的进程管理 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.6.1 Linux进程管理介绍
6.6.1 Linux进程管理介绍在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
处理 6.6.1 Linux进程管理介绍 时先执行“注入单一故障”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“定位首个分叉”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.6.1 Linux进程管理介绍 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.6.2 Android中的进程管理介绍
6.6.2 Android中的进程管理介绍在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
处理 6.6.2 Android中的进程管理介绍 时先执行“定位首个分叉”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“恢复同输入重放”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.6.2 Android中的进程管理介绍 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.6.3 AMS进程管理函数分析
6.6.3 AMS进程管理函数分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
处理 6.6.3 AMS进程管理函数分析 时先执行“恢复同输入重放”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“锁定历史基线”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.6.3 AMS进程管理函数分析 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.6.4 AMS进程管理总结
6.6.4 AMS进程管理总结在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任是界定分析分母和结论边界。先列出它包含的入口、对象和退出条件,再用Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志排除只凭类名或流程图得出的结论。
处理 6.6.4 AMS进程管理总结 时先执行“锁定历史基线”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“复现正常轨迹”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 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 App的Crash处理 时先执行“复现正常轨迹”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“注入单一故障”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.7 App的Crash处理 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.7.1 应用进程的Crash处理
6.7.1 应用进程的Crash处理在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
处理 6.7.1 应用进程的Crash处理 时先执行“注入单一故障”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“定位首个分叉”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.7.1 应用进程的Crash处理 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.7.2 AMS的handleApplicationCrash分析
6.7.2 AMS的handleApplicationCrash分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要连接system_server记录、调度队列和目标进程回调。保存记录对象与进程身份,制造超时或死亡后检查队列推进、死亡清理和后续请求是否恢复。
处理 6.7.2 AMS的handleApplicationCrash分析 时先执行“定位首个分叉”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“恢复同输入重放”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.7.2 AMS的handleApplicationCrash分析 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.7.3 AppDeathRecipient binderDied分析
6.7.3 AppDeathRecipient binderDied分析在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要沿代理、事务数据、驱动或服务端线程追踪一次请求。记录调用方与接收方身份、同步语义、句柄或对象引用,并用死亡或错误事务验证回收。
处理 6.7.3 AppDeathRecipient binderDied分析 时先执行“恢复同输入重放”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“锁定历史基线”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.7.3 AppDeathRecipient binderDied分析 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.7.4 App的Crash处理总结
6.7.4 App的Crash处理总结在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任是界定分析分母和结论边界。先列出它包含的入口、对象和退出条件,再用Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志排除只凭类名或流程图得出的结论。
处理 6.7.4 App的Crash处理总结 时先执行“锁定历史基线”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“复现正常轨迹”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.7.4 App的Crash处理总结 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.8 本章学习指导
6.8 本章学习指导在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任要翻译成一个可推翻的运行合同:明确入口、线程或进程、状态拥有者、正常结果和首个错误返回,再由Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志复核。
处理 6.8 本章学习指导 时先执行“复现正常轨迹”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“注入单一故障”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 6.8 本章学习指导 这一目录坐标;解释它如何参与剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收;在全节点机制图中选中它并操作阶段反馈;最后在练习中凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复同输入结果。
6.9 本章小结
6.9 本章小结在“剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收”中的责任是界定分析分母和结论边界。先列出它包含的入口、对象和退出条件,再用Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志排除只凭类名或流程图得出的结论。
处理 6.9 本章小结 时先执行“注入单一故障”:在 android-4.0.1_r1 中定位真实入口,把PID/TID、对象身份和输入写入记录。进入“定位首个分叉”后仅改变一个条件,观察Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志中哪一项先偏离。
该节点的四级证据是:保留 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运行前保存主机工具链、manifest与产品目标;这些历史分支通常需要隔离的旧工具链环境。诊断命令只在可恢复模拟器或测试机执行,账号、媒体与设备标识使用隔离样本;现代设备输出不得冒充android-4.0.1_r1结果。
练习、答案与四级证据
术语复核与本章回顾
完成卷II 第6章 深入理解ActivityManagerService意味着:能解释剖析AMS启动、Activity、广播、Service、进程管理与崩溃回收,能操作全节点图与诊断切片,能制造只背生命周期回调,遗漏system_server状态机、调度队列和进程死亡清理,还能凭Activity/Process记录、任务栈、广播队列、Service连接、oom_adj、死亡通知与ANR/Crash日志恢复、复位和交接,而不是只在目录中找到关键词。
阅读导航
← 上一页:卷II 第5章 深入理解PowerManagerService · 下一页:卷II 第7章 深入理解ContentProvider →