为什么我的毫秒数倒计时不一致?
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/
出于某种原因,我的计时器不能持续倒计时,它有时会回到前一秒左右。
例如:如果我在 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/