ANR原理分析

2016/09/20 Android

ANR会影响系统整体运行吗? 需要额外处理????

ANR场景与事例

ANR机制主体实现在系统层。所有与ANR相关的消息,都会经过系统进程(system_server)调度,然后派发到应用进程完成对消息的实际处理,同时,系统进程设计了不同的超时限制来跟踪消息的处理。 一旦应用程序处理消息不当,超时限制就起作用了,它收集一些系统状态,譬如CPU/IO使用情况、进程函数调用栈,并且报告用户有进程无响应了(ANR对话框)。

ANR(Application Not Responding),应用程序无响应,简单一个定义,却涵盖了很多Android系统的设计思想。

首先,ANR属于应用程序的范畴,这不同于SNR(System Not Respoding),SNR反映的问题是系统进程(system_server)失去了响应能力,而ANR明确将问题圈定在应用程序。 SNR由Watchdog机制保证,具体可以查阅Watchdog机制以及问题分析; ANR由消息处理机制保证,Android在系统层实现了一套精密的机制来发现ANR,核心原理是消息调度和超时处理。

参考文档

ANR机制以及问题分析 Input系统—ANR原理分析

Search

    Table of Contents