ANR,全称为Application Not Responding,也就是应用程序无响应。
如果 Android 应用的界面线程处于阻塞状态的时间过长,就会触发“应用无响应”(ANR) 的错误。此时系统会向用户显示一个对话框,ANR 对话框会为用户提供强行退出应用的选项。
二、ANR的四种类型
在Android系统中,应用程序的响应由Activity Manager及Window Manager两个系统服务所监控。通常情况下,应用出现如下四类情况时,系统将报ANR:
- KeyDispatchTimeout(最常见类型)—— input事件5s内未处理完成导致ANR发生,主要为按键和触摸事件;
日志关键字:
InputDispatching Timeout
- BroadcastTimeout:—— BroadcastReceiver在特定时间内未处理完成导致ANR发生(限制:前台广播10s;后台广播60s);
日志关键字:
Timeout of broadcast BroadcastRecord
- ServiceTimeout —— Service在特定的时间内未处理完成导致ANR发生。(限制:前台服务20s;后台服务200s);
日志关键字:
Timeout executing service