System.currentTimeMillis()在Android中没有给出准确的值

时间:2015-02-05 05:38:53

标签: java android

我有一个Android应用程序,可以找到两个事件之间的时间间隔。 当事件1触发广播时,我使用System.currentTimeInMillis()存储当前时间 当第二个事件发生时我会这样做,然后计算差异。 然而,结果总是几秒钟关闭,在某种意义上我知道间隔大约是4秒,但我得到的值大约是6。

这是因为发送广播,接收广播然后存储值之间的延迟? 如果是这样,有什么更好的方法来获得更准确的价值?

1 个答案:

答案 0 :(得分:1)

Per Developer.android.com(http://developer.android.com/reference/android/os/SystemClock.html):

  

System.currentTimeMillis()是标准的"墙"时钟(时间和时间)   date)表示自纪元以来的毫秒数。挂钟可以   由用户或电话网络设置(参见setCurrentTimeMillis(long)),   所以时间可能会不可预测地向后或向前跳跃。这个时钟   只应在与真实世界日期对应时使用   时间很重要,例如在日历或闹钟应用程序中。   间隔或经过时间测量应使用不同的时钟。   如果您使用的是System.currentTimeMillis(),请考虑收听   ACTION_TIME_TICK,ACTION_TIME_CHANGED和ACTION_TIMEZONE_CHANGED   意图广播以找出时间的变化。