1 ANR:
1定位:
a.查看Logcat,会告诉我们ANR产生的原因以及所在的类
b.通过bug_report命令导出日志文件,在FS/data/anr目录下会生成anr日志文件,我们查看最新的日志文件,会看到产生anr的具体所在方法以及行数
c.主线程占用时间过长:通过profiler选项卡,可以看到cpu视图,点击record按钮可以记录线程信息,停止记录后,可以看到主线程中每个方法的占用时长,找到占用时长最长的方法去优化
d.死锁导致:主线程等待另一个线程释放锁,时间长了就会ANR,这时我们可以在日志中搜索blocked可以找到死锁的原因,以及没有释放锁的子线程
e.IO导致:一般是文件操作引起,在日志中搜索ANR in关键字,找到ANR发生的时间然后往前看几秒,如果有耗时文件操作,对其采用异步操作
f.内存泄漏:查看anr日志前后是否有OOM异常,内存泄漏导致内存占用一直在增长最后OOM了,进而产生ANR
网友评论