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

Java Android:深度睡眠的时间间隔(System.nanoTime()、System.currentTimeMillis()、SystemClock.elapsedRealtimeNanos()),java,android,time,clock,nanotime,Java,Android,Time,Clock,Nanotime,我正在实现一个应用程序,它的API级别最低为14级(这很重要),并且需要一致的间隔测量。不需要毫秒精度,只需要始终计算时间(已用秒)。 到目前为止,对于时间间隔,我知道以下解决方案: System.nanoTime()-如果Android正在运行,效果很好,但在深度睡眠时停止(这很糟糕) System.currentTimeMillis()-很好,但不合适,因为用户或使用setCurrentTimeMillis(long)的代码可以对其进行更改 SystemClock.elapsederrea

我正在实现一个应用程序,它的API级别最低为14级(这很重要),并且需要一致的间隔测量。不需要毫秒精度,只需要始终计算时间(已用秒)。

到目前为止,对于时间间隔,我知道以下解决方案:

  • System.nanoTime()
    -如果Android正在运行,效果很好,但在深度睡眠时停止(这很糟糕)
  • System.currentTimeMillis()
    -很好,但不合适,因为用户或使用
    setCurrentTimeMillis(long)
    的代码可以对其进行更改
  • SystemClock.elapsederrealtimenos()
    -即使在深度睡眠时也会计算经过的时间,但需要API级别17

  • 是否有其他方法可以在API 14上获得合理的二次精度测量间隔
    我考虑使用
    System.currentTimeMillis()
    收听广播,以查看系统时钟是否已更改。但是,这似乎不是最好的解决方案。

    您尝试过吗?

    您有internet连接吗?在这种情况下,外部源可能是一个解决方案。正确的API使用…它是在Android API级别1中引入的