Android:深度睡眠的时间间隔(System.nanoTime(),System.currentTimeMillis(),SystemClock.elapsedRealtimeNanos())

时间:2014-10-08 21:05:56

标签: java android time clock nanotime

我正在实施一个具有最低API级别14的应用程序(这很重要),并且需要一致的间隔测量。不需要ms精度,它只需要总是计算时间(经过的秒数)。

到目前为止,为了处理时间间隔,我知道这些解决方案:

  1. System.nanoTime() - 如果Android正在运行,效果很好,但在深度睡眠时会停止(这很糟糕)。
  2. System.currentTimeMillis() - 很好,但不合适,因为用户或代码setCurrentTimeMillis(long)可以更改。
  3. SystemClock.elapsedRealtimeNanos() - 即使在深度睡眠时计算已用时间,但要求API等级为17。
  4. 还有另一种方法可以在API 14上获得合理的二次精度间隔测量吗?我想过使用System.currentTimeMillis()监听广播意图来查看系统时钟是否已经改变。然而,这似乎不是最好的解决方案。

1 个答案:

答案 0 :(得分:4)

您是否尝试过 SystemClock.elapsedRealtime()