我想了解dumpsys gfxinfo日志的时间信息。它看起来像这样:
Applications Graphics Acceleration Info:
Uptime: 16264702 Realtime: 28169900
有人能告诉我如何将这些数字与System.currentTimeMillis()相关联吗?
答案 0 :(得分: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()
是标准的“墙”时钟(时间和时间) date)表示自纪元以来的毫秒数。挂钟可以 由用户或电话网络设置(见setCurrentTimeMillis(long)
), 所以时间可能会不可预测地向后或向前跳跃。这个时钟 只应在与真实世界日期对应时使用 时间很重要,例如在日历或闹钟应用程序中。 间隔或经过时间测量应使用不同的时钟。如果 你正在使用System.currentTimeMillis()
,考虑听一下ACTION_TIME_TICK
,ACTION_TIME_CHANGED
和ACTION_TIMEZONE_CHANGED
意图广播以找出时间的变化。
uptimeMillis()
以毫秒为单位计算。当系统进入深度睡眠状态(CPU关闭,显示较暗,设备等待外部输入)时,此时钟停止,但不受时钟缩放,空闲或其他省电机制的影响。这是大多数间隔时间的基础,例如Thread.sleep(millls)
,Object.wait(millis)
和System.nanoTime()
。该时钟保证是单调的,当间隔不跨越设备睡眠时,适用于间隔定时。大多数接受时间戳值的方法当前都需要uptimeMillis()
时钟。
elapsedRealtime()
和elapsedRealtimeNanos()
返回自系统启动以来的时间,并包括深度睡眠。该时钟保证是单调的,即使在CPU处于省电模式时也会继续打勾,因此是通用间隔时序的推荐基础。