方法:
-
logcat 看到anr问题 查看reason并定位 看cpu使用率,如果100%就是主线程堵塞,否则可能是GC问题
-
adb pull /data/anr/traces.txt
-
定位日志,看主线程,如果dalvik thread 显示Supoended,内存问题
-
看anr发生前5slong
如何避免:
合理使用 UI 主线程,耗时操作放入其他线程工作;
合理使用 Handler 来处理其他线程请求;
合理使用并遵循 Android 生命周期, 避免在 onCreate() and onResume() 做过多的事情;
使用一些架构形成规范来避免内存等问题,例如:MVP、RxJava;
经常使用工具来检查内存问题,例如:MAT、TraceView、AS 自带等工具;
避免加载大图片引起内存不足导致 ANR;
避免内存泄露引起的 ANR
网友评论