IT技术博客大学习 共学习 共进步

标签:InputManagerService

共 1 篇相关文章

IT 累计浏览 1

Android ANR 系列 1 :理解 Android ANR 设计思想

Android ANR(应用无响应)机制是系统层面为保障稳定性而设计的核心防御体系,其设计思想远非简单的“主线程超时”。ANR的实质是系统通过跨进程的协同监控与强制干预,对应用行为实施严格约束与熔断,以在开放生态中防止单点故障蔓延。系统将应用ANR与系统级无响应(SNR)明确区分,分别采用事件驱动检测和主动轮询两种不同的治理策略。 ANR监控由system_server进程主导,核心分为两类。组件类ANR通过ActivityManagerService追踪异步任务生命周期,采用“派发-回调-熔断”模型,利用Binder同步调用与Handler延迟消息构建超时检测机制。输入类ANR则更为复杂,InputDispatcher通过socket与应用建立事件通道,依赖队列状态管理(inboundQueue、outboundQueue、waitQueue)和超时检测(默认5秒)来监控事件处理流程。此外,No Focused Window类ANR反映了窗口焦点状态异常,导致事件无法分发。 该机制遵循状态可追踪、故障隔离和用户控制权兜底的设计原则。当超时触发时,系统执行多维熔断:采集线程堆栈与性能数据至traces.txt、隔离问题进程资源、并弹出提示将最终决策权交予用户。这种设计强制开发者关注主线程响应性与异步架构。 ANR问题的分析与治理也已演进为一套方法论,从依赖traces.txt的静态堆栈分析,发展到使用systrace/perfetto进行动态追踪,再到利用机器学习预测复杂根因。最终,治理的目标是走向架构预防性设计,例如约束通信拓扑、管理资源预算与强化异步边界,从而在代码层面内化系统约束,从源头预防ANR。