- 按键响应分发超时(Key Dispatch Timeout)
默认5 s
,超过则会出现ANR。 - 广播超时(Broadcast Timeout)
默认10 s
,超过则会出现ANR。 - 服务超时(Service Timeout)
默认20 s
,超过则会出现ANR。
三、ANR 产生的原因
在Android
系统中,APP
通常运行在一个UI Thread
或者叫MainThread
里。并且Android
中只有一个MainThread
和Main Message Queue
。MainThread
主要用于UI
的绘制、事件响应,监听与接收事件处理等功能。Main Message Queue
主要存放用户要处理消息的队列,主线程MainThread
从消息队列Main Message Queue
中取消息Message
后,尽快分发下去,一旦某条消息分发超时,则ANR
可能发生。
因此,当ANR
发生时,我们要分析ANR
产生的原因,也就是查找消息处理不及时的原因。例如可以从以下几个疑问点进行分析:
- 1.为什么
APP
不能获取CPU
时间片? - 2.
APP
是否是等待一些没能及时处理的事件完成?