0

我想了解dumpsys gfxinfo 日志上的时间信息。它看起来像这样:

Applications Graphics Acceleration Info:

Uptime: 16264702 Realtime: 28169900

谁能告诉我如何将这些数字与 System.currentTimeMillis() 关联起来?

4

1 回答 1

2

ActivityManagerService.java

    long uptime = SystemClock.uptimeMillis();
    long realtime = SystemClock.elapsedRealtime();
    pw.println("Applications Graphics Acceleration Info:");
    pw.println("Uptime: " + uptime + " Realtime: " + realtime);

同样来自SystemClock描述:

提供三种不同的时钟,它们不应混淆:

System.currentTimeMillis()是标准的“挂钟”(时间和日期),表示自纪元以来的毫秒数。挂钟可以由用户或电话网络设置(请参阅setCurrentTimeMillis(long)),因此时间可能会意外地向后或向前跳跃。仅当与现实世界的日期和时间的对应关系很重要时才应使用此时钟,例如在日历或闹钟应用程序中。间隔或经过时间测量应使用不同的时钟。如果您正在使用,请System.currentTimeMillis()考虑收听 ACTION_TIME_TICK和 Intent 广播以了解时间何时更改。ACTION_TIME_CHANGEDACTION_TIMEZONE_CHANGED

uptimeMillis()以系统启动后的毫秒数为单位。此时钟在系统进入深度睡眠(CPU 关闭、显示器变暗、设备等待外部输入)时停止,但不受时钟缩放、空闲或其他省电机制的影响。这是大多数间隔计时的基础,例如Thread.sleep(millls)Object.wait(millis)System.nanoTime()。这个时钟保证是单调的,适用于区间不跨越设备睡眠的区间计时。大多数接受时间戳值的方法目前都需要uptimeMillis()时钟。

elapsedRealtime()elapsedRealtimeNanos()返回自系统启动以来的时间,包括深度睡眠。这个时钟保证是单调的,即使在 CPU 处于省电模式时也会继续计时,因此是通用间隔计时的推荐基础。

于 2013-08-05T15:14:54.403 回答