在学习Android和java的过程中,我一直在构建一个小型的暗室计时器应用程序。
最终使用了CountDownTimer,因为它为我做了大部分工作。:{)
然而,我在类中遇到了一个看起来像是错误的东西。
我的初始结构使用onTick()回调来递减时间计数器,并更新剩余时间显示。如果我设置它,例如:
new CountDownTimer(60000, 100) {
public void onTick(long millisUntilFinished) {
mDisplayTime.setText(String.valueOf(millisUntilFinished)/1000);
timeTenths -= 1;
updateDisplay();
}
public void onFinish() {
// mDisplayTime.setText("Done!");
}
}.start();
总的超时时间(60秒)恰到好处,我的秒表在半秒之内。
但是,显示的计数在时钟的3.0秒时停止。
通过实验,我发现在onTick()事件中始终有5%的“短缺”。
我可以将第二个参数更改为950毫秒,但这是一个丑陋的杂乱无章...
最后,我更改了onTick()以显示实际的millisUntilFinished,这很好,同时也消除了我的计数器。
这是CountDownTimer()的已知问题吗?
戴夫
发布于 2011-05-09 02:47:06
在给谷歌打电话之前,你用LogCat检查过了吗?也就是说,在您的onTick
方法中,您可能希望调试millisUntilFinish
为您带来的东西,而不仅仅是依赖于TextView。此外,除非我理解错误,否则您可能不得不考虑onFinish()
作为您的最后一个“滴答”。
https://stackoverflow.com/questions/5929420
复制相似问题