5

我可以看到这是 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");
    }
}  
4

4 回答 4

13

getClass().getName()与其在特定活动中放置日志的每个地方都写,不如总是首选一个TAG代表活动类名称的名称。

Why use TAG?

当您运行您的应用程序时,其中可能有多个 Activity 类。为了区分哪个活动类记录了信息,logcat我们使用TAG当然代表类的名称。

编写 TAG 的正确方法(我并不是说您写的内容是错误的)是:

private static final String TAG = TasksSample.class.getSimpleName(); // and not "TasksSample"
于 2012-06-28T07:29:08.893 回答
6

以前的每个答案都是正确的,但我只想添加一点评论。

private static final String TAG = TasksSample.class.getSimpleName();

或者

private static final String TAG = "TasksSample"

后者在您使用时使用proguard。如您所知,proguard混淆了类名,它也会影响日志。

于 2017-01-11T06:35:48.283 回答
1

每次调用一个函数都会产生费用,并且getClass().getName()每次将某些内容登录到系统时都会调用 2 个函数(一个已经很长的过程)。

因此,最好将标签保存为 afinal static String而不是一遍又一遍地调用相同的函数。

于 2012-06-28T07:27:33.060 回答
0

是的,这是一种常见的做法,并且 Google 支持进行日志记录和调试。如果您使用,那么您必须每次getClass().getName()都调用,因此使用 TAG 是一种更好的方法。getClass().getName()

实际上getClass().getName()返回类名,其中 TAG 表示您的类的易于理解的名称/标识。

于 2012-06-28T07:45:21.813 回答