Android应用出现ANR的原因和解决办法

Android规定如果5秒钟之内无法响应屏幕触摸事件或者键盘输入事件就会出现ANR,BroadcastReceiver如果十秒也没执行完操作也会出现ANR。

怎么定位问题?当一个进程发生了ANR了以后,系统会在/data/anr目录下创建一个文件traces.txt,通过分析这个文件就能定位出ANR的原因。
先导出traces文件,其中.表示当前目录:

adb pull /data/anr/traces.txt .

解决办法是避免在主线程中做耗时操作,将耗时操作放在线程中执行,采用异步的方式执行耗时操作。同时要注意子线程和主线程抢占同步锁的情况。

你可能感兴趣的:(Android)