根据API文档以及之前的SO threads,SystemClock.elapsedRealtime()
应该保持准确的时间,即使设备处于休眠状态。这不是我观察到的。当设备处于低功耗模式时,SystemClock.elapsedRealtime()漂移
我写了一个简单的时钟,它位于while (true)
循环中,并基于SystemClock.elapsedRealtime()
的值更新屏幕上的时间。如果我在两个设备上同步时钟,例如通过NTP,然后继续在其中一个设备上开启和关闭屏幕几次,显示的时间将漂移高达+/- 0.7秒。 (这只发生在手机未连接到外部电源时,因此睡眠模式可能是此处的罪魁祸首)。
这是正常的吗?这是Android中的错误吗?有什么办法通过睡眠/唤醒周期来保持约20毫秒的定时精度?
感谢,似乎你是对的,使用currentTimeMillis()工作有点比elapsedRealtime()在漂移方面更好(它仍然似乎漂移了一下,虽然) –