我正在尝试实现一个计时器,它可以用于短(秒)事件或更长(小时等)事件。
理想情况下,它应该在 CPU 关闭时持续存在,例如,电池没电了。如果我使用 System.currentTimeMillis() 设置开始时间并使用相同的函数设置结束时间,它几乎适用于所有情况,除了在闰秒、闰年、夏令时更改等期间......或者,如果用户只是更改时间(我已经验证了这一点)。这是在Android系统上,顺便说一句。
相反,如果我使用 System.nanoTime(),除了可能更准确之外,它不会出现时间变化等常见的“困难时间”问题。我的问题是,System.nanoTime() 是否测量纳秒某个任意时间,在“困难时期”?我不确定正确的术语是什么,但例如,System.nanoTime() 会在 X 处运行,然后 X+1 小时后,系统关闭(例如,Android 设备上的电池没电了),然后是 X +10 小时,系统启动,此时运行 System.nanoTime() 会返回 10 小时吗?或者它会返回 1 小时(因为当系统关闭/休眠时 nanoTime 使用的“计数器”可能不会运行?)。