我用一个60秒计时器倒计时用什么看起来是一个非常有前途的CountDownTimer
:http://developer.android.com/reference/android/os/CountDownTimer.htmlAndroid`CountDownTimer`坏了?
但有时我发现,来电还没有真正的onFinish
执行之前已有60个来电onTick
。通常我会发现计时器卡在1而不是0,因为这个原因。当我坚持在调试器中时,这变得更加明显。实际上,当我在调试器中放置一个断点时,在调用onFinish
之前,onTick
被调用的次数只有50次。
我错过了什么,或者我真的应该假设只有当所有的onTick
函数被调用时,才能保证onFinish
被调用?
这里是我的代码:
public SomeRetryTimer(long future, long countDownInterval) {
super(60*1000, 1000);
mCurrentCountdown = 60
}
@Override
public void onTick(long l) {
mCurrentCountdown--;
doSomething();
}
@Override
public void onFinish() {
finishStuff(); // at this point, i find that mCurrentCountdown is sometimes not 0
}
我做错了什么,或者这是一个问题与API?我的意思是,我查看了源代码,并且定时器应该在处理程序中同步...消息是否按顺序发布?
正在检查'mCurrentCountdown'的值是否知道发生这种情况的唯一方法?我不认为有什么'doSomething()'可能导致问题?我自己从来没有遇到过这门课的问题。所以我很好奇它是否有问题 – codeMagic