一、 目标
1. 了解并熟悉如何使用Log
2. 通过Log分析ANR(Application noresponse)和Force Closed引起的程序问题
3. 知道系统Log文件的存放位置
4. 通过Log快速定位到Root Cause的位置
二、 具体内容
1.android.util.Log常用的方法有以下5个:
Log.v() Log.d() Log.i() Log.w() 以及 Log.e()
分别对应:
VERBOSE,DEBUG,INFO, WARN,ERROR。
§ Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v("","");
§ Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择.
§ Log.i的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息
§ Log.w的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息。
§ Log.e为红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看栈的信息了。
书写格式如下:
Log.v(LogDemo.ACTIVITY_TAG, "This is Verbose.");
Log.d(LogDemo.ACTIVITY_TAG,"This is Debug.");
Log.i(LogDemo.ACTIVITY_TAG,"This is Information");
Log.w(LogDemo.ACTIVITY_TAG,"This is Warnning.");
Log.e(LogDemo.ACTIVITY_TAG,"This is Error.");
2. Log文件
一般情况下,在以下三种情况下会产生Log文件保存在手机中(data/log文件夹下),虚拟机默认不产生:
§ 程序异常退出 uncaused exception
§ 程序强制关闭 Force Closed(FC)
§ 程序无响应 Application no response(ANR)
什么时候会产生ANR呢?
§ 界面操作(按钮的点击)等待时间超过5秒
§ HandleMessenge 回调函数中执行超过10秒
三、 问题解答
1. 如何在程序中打出Log以及log的分类区别?
2. 给你一个Log文件,如何定位到问题的所在?
四、 练习
五、 总结
1.首先,一个Android的程序在开发阶段需要进行故障排查,同样的,开发后也需要进行健壮性测试,这个过程中都少不了Log的应用,所以不妨在写程序的时候在一些关键点写一些Log,方便后面观察程序运行状态。
Plus:程序后续的测试可以使用Android自带的monkey命令进行压力测试。在cmd中进入模拟器Linux环境里面(adb shell),找到软件的路径,然后运行monkey –p com.test.myApp –v 1500(自动测试com.test.myApp这个包1500次),然后通过Log找到问题。