为什么在大多数Android日志代码中使用TAG

Che*_*eng 4 android

我可以看到这是Android开发人员的常见做法.

public final class TasksSample extends ListActivity {
    private static final String TAG = "TasksSample";
    private void method() {
        Log.i(TAG, "message");
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我这样做会更容易吗?我不需要为每个新类声明TAG.

public final class TasksSample extends ListActivity {
    private void method() {
        Log.i(getClass().getName(), "message");
    }
}  
Run Code Online (Sandbox Code Playgroud)

Aru*_*rge 12

不是getClass().getName()在特定活动中放置日志的每个位置写入,而是始终优先使用TAG表示活动类的名称.

Why use TAG?

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

编写TAG的正确方法(我不是说你写的是错的)是:

private static final String TAG = TasksSample.class.getSimpleName(); // and not "TasksSample"
Run Code Online (Sandbox Code Playgroud)


小智 5

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

private static final String TAG = TasksSample.class.getSimpleName();
Run Code Online (Sandbox Code Playgroud)

要么

private static final String TAG = "TasksSample"
Run Code Online (Sandbox Code Playgroud)

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