我想了解dumpsys gfxinfo 日志上的时间信息。它看起来像这样:
Applications Graphics Acceleration Info:
Uptime: 16264702 Realtime: 28169900
谁能告诉我如何将这些数字与 System.currentTimeMillis() 关联起来?
我想了解dumpsys gfxinfo 日志上的时间信息。它看起来像这样:
Applications Graphics Acceleration Info:
Uptime: 16264702 Realtime: 28169900
谁能告诉我如何将这些数字与 System.currentTimeMillis() 关联起来?
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_CHANGED
ACTION_TIMEZONE_CHANGED
uptimeMillis()
以系统启动后的毫秒数为单位。此时钟在系统进入深度睡眠(CPU 关闭、显示器变暗、设备等待外部输入)时停止,但不受时钟缩放、空闲或其他省电机制的影响。这是大多数间隔计时的基础,例如Thread.sleep(millls)
、Object.wait(millis)
和System.nanoTime()
。这个时钟保证是单调的,适用于区间不跨越设备睡眠的区间计时。大多数接受时间戳值的方法目前都需要uptimeMillis()
时钟。
elapsedRealtime()
并elapsedRealtimeNanos()
返回自系统启动以来的时间,包括深度睡眠。这个时钟保证是单调的,即使在 CPU 处于省电模式时也会继续计时,因此是通用间隔计时的推荐基础。