use*_*447 12 performance android
Android文档(http://developer.android.com/reference/android/util/Log.html)说:
除了在开发期间,不应该将详细编译到应用程序中.调试日志在运行时编译但被剥离.始终保留错误,警告和信息日志
我刚做了一个测试.在我的活动中,我写道:
private static String test(String what) {
Log.e("test", "I am called with argument: " + what);
return what;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.v("test", "log level: " + test("v"));
Log.d("test", "log level: " + test("d"));
Log.i("test", "log level: " + test("i"));
Log.w("test", "log level: " + test("w"));
Log.e("test", "log level: " + test("e"));
}
Run Code Online (Sandbox Code Playgroud)
我将我的项目导出为apk文件,然后我在手机上安装了这个apk.我在手机上运行这个应用程序,然后查看了日志.在那里,我看到函数测试被调用了五次,所有五次调用Log.something函数导致其文本被写入日志.
Log.d调用在运行时是否真的被剥离了?
She*_*lum 12
不,你必须自己做.您可以像这样制作自己的Log.d包装器:
public static void debug(String tag, String msg) {
if (BuildConfig.DEBUG) {
Log.d(tag, msg);
}
}
Run Code Online (Sandbox Code Playgroud)
此问题已在此处报告,并在2012年3月的ADT 17.0.0中提供了解决方案
添加了一项功能,允许您仅在调试模式下运行某些代码.Builds现在生成一个名为BuildConfig的类,其中包含一个DEBUG常量,该常量根据您的构建类型自动设置.您可以检查代码中的(BuildConfig.DEBUG)常量以运行仅调试函数.
| 归档时间: |
|
| 查看次数: |
3192 次 |
| 最近记录: |