为什么我的毫秒数倒计时不一致?

Why is my milliseconds count down not consistent?

出于某种原因,我的计时器不能持续倒计时,它有时会回到前一秒左右。

例如:如果我在 49 秒开始计时,这就是打印出来的内容:

(以毫秒为单位)

48774
47374
48909 //不一致

47063
46212
44987
48426 //不一致

46294 //不一致

44738
43636
42410
...等等

我所做的就是传入两个整数(分和秒)并将它们组合在一起以获得总毫秒数。

这是我的代码:

new CountDownTimer(((min * 60 + sec) * 1000), 1000) {//total time, interval

                public void onTick(long millisUntilFinished) {
                    System.out.println(millisUntilFinished);
                //...
                }
}

如何让毫秒数始终显示?

编辑:

我也试过将它添加到 onTick 但它仍然不起作用

if((int)prevMill > (int)millisUntilFinished){
        prevMill = millisUntilFinished;
        System.out.println(prevMill);
 }

我发现 onTick() 是从前一个 onTick() 运行 的时间开始计算的,这会在每个 tick 上产生一个微小的错误。

看到这个post:android CountDownTimer - additional milliseconds delay between ticks

即使您在这样的 API 中将值指定为毫秒,默认情况下系统计时器的分辨率也只有大约 +/-15 毫秒(因 OS 等而异)。

这可以更改,请参阅此处:https://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/