Java Android:深度睡眠的时间间隔(System.nanoTime()、System.currentTimeMillis()、SystemClock.elapsedRealtimeNanos())
我正在实现一个应用程序,它的API级别最低为14级(这很重要),并且需要一致的间隔测量。不需要毫秒精度,只需要始终计算时间(已用秒)。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
到目前为止,对于时间间隔,我知道以下解决方案:
System.nanoTime()
-如果Android正在运行,效果很好,但在深度睡眠时停止(这很糟糕)System.currentTimeMillis()
-很好,但不合适,因为用户或使用setCurrentTimeMillis(long)
的代码可以对其进行更改SystemClock.elapsederrealtimenos()
-即使在深度睡眠时也会计算经过的时间,但需要API级别17是否有其他方法可以在API 14上获得合理的二次精度测量间隔
我考虑使用
System.currentTimeMillis()
收听广播,以查看系统时钟是否已更改。但是,这似乎不是最好的解决方案。您尝试过吗?您有internet连接吗?在这种情况下,外部源可能是一个解决方案。正确的API使用…它是在Android API级别1中引入的