Android sdk开发(二) Log日志类的设计
2015-12-22 00:49
549 查看
Log类的设计
正式代码设计之前我们先考虑一下日志类的使用。日志主要用在调试app 一些复杂的业务流程,借助log 可以很容易找到问题所在
因为android.util.Log 定义为final类(不可继承) 所以我采用组合的方式才重写一个可以控制开关的日志工具类。考虑到Log应用的广泛性,所以定义为static,生命周期为全局
public class Log { /** * 日志的开关, false 表示不打印日志 */ private static boolean open = false; public static boolean isOpen() { return open; } public static void setOpen(boolean open) { Log.open = open; }
Log的开关控制,一般在app初始化的地方设置。后续再讨论
public static void d(String tag, String msg){ if(open == false){ return; // 不打印日志 } android.util.Log.d(tag,msg); }
其中tag和msg 考虑到传入的参数需要频繁转型
比如说像打印一个int型的变量值。这时候会很不方便。同理其他非String类型的都需要转化为String 。
因为优化一下当前方法
public static voidd(Object tag, Object msg){ if(open == false){ return; // 不打印日志 } android.util.Log.d(String.valueOf(tag), String.valueOf(msg)); }
这时候如果传入的 tag == null 或者“” 或者 包含有” ” \n\r等字符 ,那么输出的结果可能不是我们想要的,
接着继续优化一下该方法
package phoebe.frame.util; /** * 日志打印 * * @author coffee <br> * * 2015-12-16 下午9:39:41 */ public class Log { /** * 日志的开关, false 表示不打印日志 */ private static boolean open = false; public static boolean isOpen() { return open; } public static void setOpen(boolean open) { Log.open = open; } public static void d(Object tag, Object msg) { if (open == false) { return; } tag = handleMsgOrTag(tag); msg = handleMsgOrTag(msg); android.util.Log.d(String.valueOf(tag), String.valueOf(msg)); } private static Object handleMsgOrTag(Object msgOrTag) { if (msgOrTag == null) { msgOrTag = "[null]"; } else if (msgOrTag.toString().trim().length() == 0) { msgOrTag = "[\"\"]"; } else { msgOrTag = msgOrTag.toString().trim(); } return msgOrTag; } }
相关文章推荐
- Android笔记(11)---ViewFlipper的使用
- android解决dialog和popupwindow的BadTokenException:Unable to add window
- Android最佳性能实践(二)——分析内存的使用情况
- 解决Android Studio在MacbookPro 13下卡顿的问题
- Android 新增一张图片 加入相册
- Android ViewGroup中事件触发和传递机制
- Android ListView类+ArrayAdapter类简单演示
- android,内容延伸到状态栏
- Android之实例界面设计
- Android之我的第一个程序
- Android之SQLite存取DATETIME类型
- Android 近百个项目的源代码
- Android之调用本地摄像头
- Android 中的BroadCastReceiver
- Android Service和Activity基于串口蓝牙模块的双向通信
- android 的NDK在Windwos环境搭建(一)
- android 公开静态内部类BroadcastReceiver
- Android之获取IP
- android 的Activity和Service之间的通信
- Android之控制视图