我正在尝试实现一个计时器,它可以用于短时间 (秒) 和长时间 (小时等) 的事件。
理想情况下,它应该在 CPU 关闭的时候保留,例如电池已经耗尽。如果我使用 System.currentTimeMillis() 设置开始时间和结束时间,它在几乎所有情况下都有效,除了像闰秒、闰年、夏令时变化等时期...或者,如果用户只是改变时间 (我已经验证过这一点)。顺便说一句,这是在 Android 系统上。
相反,如果我使用 System.nanoTime(),除了可能更精确外,它不会出现通常与时间更改等有关的“硬性问题”。我的问题是,System.nanoTime() 是否从某个任意时间开始测量纳秒?我不确定正确的术语是什么,但是例如,如果在 X 处运行 System.nanoTime(),然后 X + 1 小时后关闭系统 (例如 Android 设备上的电池已耗尽),然后再过 10 小时,系统重新启动,此时运行 System.nanoTime(),它会返回 10 个小时吗?还是会返回 1 小时(因为当系统处于关闭/睡眠状态时,nanoTime 使用的“计数器”可能没有运行)?