用Logs进行基础安卓debugging
来源:互联网 发布:百度云盘在淘宝怎么买 编辑:程序博客网 时间:2024/06/04 00:52
就像大多数软件工程领域,debugging在安卓开发中扮演重要的角色。正确的设置你的应用debugging能够减少大量时间和困惑。不幸的事,在我的经验看来,没有很多初学者学着正确的用安卓SDK自带的工具类。除非你是以为有经验的开发者,这是我个人的看法,安卓debugging应该按照一套模式。因为以下几点原因会带来一些好处:
- 它能帮你在代码间预见bugs。为你的开发工作区设立debugging将会给你带来领先当将来可能遇到bug时。
- 在debugging的过程中,它给你中央化的控制力。混乱稀少的安排log消息会让你的logcat输出很难推测debuggings结果。打开或关闭一些log消息组,能让你的生活简单多了,特别是当你的应用很复杂时。
Log 类
你们可能不知到,安卓SDK自带了一个有用的logging工具类叫做android.util.Log. 这个类允许打出的log消息根据严重度分类;每种LOG方法有自己的消息,按照如下从低到高的优先级:
- Log.v() 方法输出 log verbose messages (啰唆的log消息).
- Log.d() 方法输出log debug messages.
- Log.i() 方法输出log informational messages (log 情报消息).
- Log.w() 方法输出log warnings(警告).
- Log.e() 方法输出log errors(错误).
- Log.wtf() 用来log应该永远不会发生的事件。("wtf" 是多么可怕的失败的缩写),就像java的assert方法。
大家应该总是去考虑用适当的这六种方法来过滤你的logcat输出。去理解什么时候应该往你的应用里加log也很重要:
- Verbose logs除了开发阶段,其他时候都不应该加进程序里。当你的程序准备发布到世界上时,你要么把这些log注释掉,要么用ProGuard去掉你JAR执行包里的verbose log(Chrstopher 在StackOverflow帖子里给了答案http://stackoverflow.com/q/2018263/844882)。
- Debug logs 被编译进去但是在运行时被忽略。
- Error,warning和informational logs 应该一直保留。
一个简单的模式
下面是一个简单的debugging实现方法。一个全局static string变量来表示特定的类(比如一个Actiity、service、adapter等等),一个boolean变量表示log信息该不该被logcat打出。
public class SampleActivity extends Activity { /** * A string constant to use in calls to the "log" methods. Its * value is often given by the name of the class, as this will * allow you to easily determine where log methods are coming * from when you analyze your logcat output. */ private static final String TAG = "SampleActivity"; /** * Toggle this boolean constant's value to turn on/off logging * within the class. */ private static final boolean VERBOSE = true; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (VERBOSE) Log.v(TAG, "+++ ON CREATE +++"); } @Override public void onStart() { super.onStart(); if (VERBOSE) Log.v(TAG, "++ ON START ++"); } @Override public void onResume() { super.onResume(); if (VERBOSE) Log.v(TAG, "+ ON RESUME +"); }}
别担心你的log信息在logcat中很有创意。比如上边这个例子运行后logcat会输出的很有格式、很适合人类阅读:
V SampleActivity +++ ON CREATE +++V SampleActivity ++ ON START++V SampleActivity + ON RESUME +
总结
这篇帖子简单的介绍了安卓debugging可以(应该)遵循的基本思路。将来会介绍的更深入一些。
Refference:
Alex Lockwood,May 30, 2012, http://www.androiddesignpatterns.com/2012/05/intro-to-android-debug-logging.html
0 0
- 用Logs进行基础安卓debugging
- logs
- 安卓基础01
- 安卓基础开发
- 安卓基础day1
- 安卓基础巩固
- 安卓JNI基础
- 安卓基础
- 关于安卓基础
- 安卓基础介绍
- 安卓基础
- 安卓基础
- 安卓杂乱基础
- 安卓基础
- 安卓基础
- 安卓service 基础
- 安卓开发基础
- 安卓开发基础
- 在Bullet Physics Engine中使用约束
- springmvc和多数据源整合框架研究
- Python 异常处理
- 使用java将 WORD,EXCEL转化为HTML
- Fibonacci六种实现方式的比较
- 用Logs进行基础安卓debugging
- String类型的超大的数字转2进制输出(算法面试)
- SSH之 配置表与表之间的关系
- 为什么没有把字符流转换成字节流的转换流呢
- 移动互联下的 HTTPS 前景
- Twig模版语言入门
- java :database 大数据量数据的插入/更新操作 solution
- HTTP Status 500 - Unable to compile class for JSP:Duplicate local variable xxx
- URAL 2000 Grand Theft Array V 贪心