我可以看到这是Android开发人员的常见做法。
public final class TasksSample extends ListActivity {
private static final String TAG = "TasksSample";
private void method() {
Log.i(TAG, "message");
}
}
如果我这样做,会更容易吗?我不需要为每个新类声明 TAG。
public final class TasksSample extends ListActivity {
private void method() {
Log.i(getClass().getName(), "message");
}
}
活动中放置日志的每个位置写入getClass().getName()
,不如始终使用表示活动类名称的TAG
。
Why use TAG?
运行应用程序时,其中可能有多个 Activity 类。为了区分哪个活动类记录了logcat
的信息,我们使用了一个TAG
当然表示类的名称。
编写 TAG 的正确方法(我不是说你写的是错误的)是:
private static final String TAG = TasksSample.class.getSimpleName(); // and not "TasksSample"
以前的每个答案都是正确的,但我只想添加一点评论。
private static final String TAG = TasksSample.class.getSimpleName();
或
private static final String TAG = "TasksSample"
当您使用 proguard
时会使用后者。如您所知,proguard
混淆类名,也会影响日志。
每次调用一个函数都会造成费用,每次将某些内容登录到系统时getClass().getName()
调用 2 个函数(一个已经很长的过程)。
因此,最好将标签保存为final static String
,而不是一遍又一遍地调用相同的函数。
是的,这是一种常见的做法,谷歌支持它进行日志记录和调试。如果您使用getClass().getName()
那么每次都必须调用getClass().getName()
,因此使用 TAG 是一种更好的方法。
实际上getClass().getName()
返回类名,其中 TAG 表示易于理解的类名称/标识。