我正在实施一个具有最低API级别14的应用程序(这很重要),并且需要一致的间隔测量。不需要ms精度,它只需要总是计算时间(经过的秒数)。
到目前为止,为了处理时间间隔,我知道这些解决方案:
System.nanoTime()
- 如果Android正在运行,效果很好,但在深度睡眠时会停止(这很糟糕)。System.currentTimeMillis()
- 很好,但不合适,因为用户或代码setCurrentTimeMillis(long)
可以更改。SystemClock.elapsedRealtimeNanos()
- 即使在深度睡眠时计算已用时间,但要求API等级为17。还有另一种方法可以在API 14上获得合理的二次精度间隔测量吗?我想过使用System.currentTimeMillis()
监听广播意图来查看系统时钟是否已经改变。然而,这似乎不是最好的解决方案。