简单的记述一下android log日志打印的优化。
首先,我们要知道系统自带的log打印是有长度限制的,而这个限制我记得大约为4 1024个字节,所以在数据量过多的时候,打印是不完全的。*
其次,为什么要封装?
程序中,过多的log日志打印是会影响性能的,多到什么情况呢 ? 看我下面这个demo测试一下!
这里做了个简单的测试,一个小循环10000次,打印或不打印耗时比较,相差约耗时84毫秒,或许有的人觉得无所谓,这么点时间而已,但不可否认的是log的打印确实会耗时。那么可以说此处也是一个处理优化的地方。
然后,继续说下一个问题。保密性
不清楚大家知道没,假设正式版发布后,如果log的不注释掉,关掉。别人是能读取到你的打印日志的,所以为了程序的安全,最好是在发布前,将打印的全关掉。
那么一个个去注释这工作量似乎不小吧,而且谁还记得哪里有没有遗漏,所以就有了我说的封装管理。
最后,就简单的上一下代码,其实很简单的一个工具类而已,即保证了日志输出的完整,又完善了日志的打印管理。
public class LogUtile {
private static boolean showFlag =true;
private static StringTAG ="LogUtile_data";
private static int logLenth =2000;
public static void Log_d(String str) {
if (showFlag) {
if (str.length() >logLenth) {
Log_d_long(str, logLenth);
}else
Log.d(TAG, str);
}
}
private static void Log_d_long(String str, int cutLength) {
String substring = str.substring(0, cutLength);
String endStr = str.substring(cutLength, str.length());
if (endStr.length() > cutLength) {
Log.d(TAG, substring);
Log_d_long(endStr, cutLength);
}else
Log.d(TAG, endStr);
}
public static void Log_d(String str, Exception exception) {
if (showFlag) {
if (str.length() >logLenth) {
Log_d_long(str, logLenth);
}else
Log.d(TAG, str, exception);
}
}
}