我曾经使用我的自定义类来负责使用以下实现进行日志记录
public class Logger {
public final static boolean DEBUG = true;
public static void d(String tag, String msg) {
if(DEBUG)
Log.d(tag, msg);
}
}
当我发布应用程序时,我将标志设置为false,但是我被告知以下方法效率不高,因为字符串仍然被分配然后在内存中释放
记录器的使用方式如下:
Logger.d("tag", "message");
或者可能是这样,通过这样做,将调用StringBuilder
Logger.d("tag", "server response: " + response + " timing: " + timing);
这是真的,dalvik /编译器不能优化它来防止这种行为.如果是这样的话,除了移动if外,我还能做些什么来优化它?
解决方法:
尝试使用Proguard从生产apk的字节码中完全删除日志记录.在调试版本上只需禁用“proguarding”.
例如.:
Remove all debug logging calls before publishing: are there tools to do this?
顺便说一句,很少有不必要的字符串连接不好,但通常不是那么难(除非你在循环中多次这样做),所以不要妖魔化它:)