ANR
主要是ActivityManagerService和ActiveServices中,以静态变量的方式定义
InputDispatching Timeout:5 秒内无法响应屏幕触摸事件或键盘输入事件。
BroadcastQueue Timeout :在执行前台广播(BroadcastReceiver)的onReceive()
函数时 10s 没有处理完成,后台为 60s。
Service Timeout :前台服务 20s 内,后台服务在 200s 内没有执行完毕。
ContentProvider Timeout :ContentProvider的 publish 在 10s 内没进行完。
ANR是怎么触发的
在执行响应时间,广播这些操作时,系统会用handle发送一个延时消息,当操作执行完了就移除这个消息,如果在指定的时间操作没有被执行完,这个消息就会被发送,触发ANR。
ANR排查
ANR问题解决