TimingLogger 是Android SDK内置的用来打印时间戳的工具类。用法很简单,见官方文档:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
public class

TimingLogger

extends Object

java.lang.Object
↳ android.util.TimingLogger

Class OverView

A utility class to help log timings splits throughout a method call. Typical usage is:

1
2
3
4
5
6
7
8
 TimingLogger timings = new TimingLogger(TAG, "methodA");
 // ... do some work A ...
 timings.addSplit("work A");
 // ... do some work B ...
 timings.addSplit("work B");
 // ... do some work C ...
 timings.addSplit("work C");
 timings.dumpToLog();

The dumpToLog call would add the following to the log:

1
2
3
4
5
D/TAG     ( 3459): methodA: begin
D/TAG     ( 3459): methodA:      9 ms, work A
D/TAG     ( 3459): methodA:      1 ms, work B
D/TAG     ( 3459): methodA:      6 ms, work C
D/TAG     ( 3459): methodA: end, 16 ms

但是,

刚开始使用时可能在Logcat中看不到打出的时间戳信息,百思不得其解,看一下dumpLog()的注释就明白了,要求自己传入TimingLogger 构造方法的TAG必须loggable,即:

Log.isLoggable(TAG, Log.VERBOSE) == true; 但自己定义的TAG默认Log级别为INFO,在Verbose下是显示不出来的。有两种解决方案:

  • 通过adb进手机shell,设置TAG属性,这种方法更改只对当前调试手机有效,且手机重启后失效:

$ adb shell

setprop

usage: setprop

setprop log.tag.TAG VERBOSE

  • 将属性直接写入手机配置文件,重启后依然有效:

/data/local.prop
log.tag.TAG=VERBOSE