java - Android:深度 sleep 的时间间隔(System.nanoTime(), System.currentTimeMillis(), SystemClock.elapsedRealtimeNanos())

标签 java android time clock nanotime

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

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

  1. System.nanoTime() - 如果 Android 正在运行,效果很好,但在深度 sleep 时停止(这很糟糕)。
  2. System.currentTimeMillis() - 很好,但不合适,因为它可以由用户或使用 setCurrentTimeMillis(long) 的代码更改。
  3. SystemClock.elapsedRealtimeNanos() - 即使在深度 sleep 时也计算耗时,但需要 API 级别 17。

是否有另一种方法可以在 API 14 上获得合理的秒精度间隔测量?
我考虑过使用 System.currentTimeMillis() 来监听广播 Intent ,看看系统时钟是否发生了变化。然而,这似乎不是最好的解决方案。

最佳答案

你试过了吗 SystemClock.elapsedRealtime()

关于java - Android:深度 sleep 的时间间隔(System.nanoTime(), System.currentTimeMillis(), SystemClock.elapsedRealtimeNanos()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26266441/

相关文章:

java - 尝试从 Activity 接收对象时 fragment 崩溃

algorithm - 如何确定算法函数的复杂度?

c# - 如何验证 "date and time"字符串是否只有时间?

Java xmpp tcp 连接生成器异常 : "NoSuchFieldError: ifpossible"

java - 这两个运算符 "|="和 "|"是什么意思

java - 动态创建数组,其中所有子项都位于线性布局内

android - ExoPlayerImpl 内部 : Renderer error can't play video android

android - Android 中的实时协作白板绘图?

java - 动画时间延迟

JAVA - 检索/存储用户名和密码到服务器的安全方法?