Android-ANR
Android-ANR
ANR(Application Not Responding)出现的原因有:
(1)输入事件(如触摸和按键等)在 5s 内未响应。
(2)BroadcastReceiver 在规定时间内(前台广播 10s,后台广播 60s)未执行完 onReceive()
,因此在 onReceive()
中不要执行耗时操作。
(3)Service 在规定时间内(前台服务 20s,后台服务 10s)未完成启动(onCreate()
)。
(4)ContentProvider 在 10s 内未完成启动(onCreate()
)。
发生 ANR 时,Android 会在 /data/anr/
下生成一个 traces.txt
,可通过 Adb 命令导出:
1 | adb pull data/anr/traces.txt |
打开文本,找到对应的进程名,在下面查找发生 ANR 相关的类、方法。
也有可能是 CPU 满负载、IO 阻塞、内存泄漏等等。