1.1 Android进程终止和重启问题分类
• App Force Close 问题
原因是:虚拟机捕获了一些unchecked异常,如空指针异常等
在ddms或logcat或bugreport的log中搜索FATAL关键字,或者在/data/system/dropbox目录中找对应生成的crash字段的文件
• ANR问题
原因是:当前进程的ui主线程被阻塞了或处理一些耗时的任务,可以参考google sdk的详细介绍:http://developer.android.com/guide/practices/responsiveness.html里面有anr类型的介绍及其如何从设计上避免ANR问题。
常见包括
1.调用了阻塞函数
2.主线程处理的任务太耗时
3.死锁
4. cpu占用率过高(iowait过高)
在ddms的log中搜索ANR关键字或者/data/system/dropbox找anr字段的文件或者找刚发生问题时/data/anr目录下的trace.txt文件。在J版本上google在bugreport里面也增加更多的手段定位anr问题:1. dumpsys window lastanr 2. 在c++层按键分发的时候也记录了一些信息,可以搜索:Input Dispatcher State at time of last ANR。定位anr问题关键是:一是看cpu占用率,二是看发生问题apk的主线程正在做什么。 如果cpu占用率很高,首先需要弄清楚那个进程在使用cpu,可以通过anr文件看到;也可能需要动态查看系统调用栈,比如adb shell debuggerd -b 进程号 >D:\trace01.txt