计时器结束得太早



朋友们,我有一个简单的计时器,假设它每10ms打一次勾,持续2秒。

breathTimer = new CountDownTimer(2000, 10) {
int currStep = 0;
public void onTick(long millisUntilFinished) {
Log.e(String.valueOf(currStep*10),String.valueOf(mSecPerBreath));
currStep++;
}
public void onFinish() {
Log.e("END: "+String.valueOf(currStep*10),String.valueOf(mSecPerBreath));
}
};
breathTimer.start();

然而,它总是过早停止,例如

E/END:1640:2000

你认为问题出在哪里?

或者,如果我将计时器设置为3000,它将以E/end结束:2520:2000

根据文档,与倒计时间隔(10ms(相比,onTick执行时间似乎很重要。这可能是增加周期(即2520(的原因。

对onTick(long(的调用被同步到此对象,因此在上一次回调完成之前,不会发生对onTick[long]的一次调用。只有当onTick(long(的实现需要一段与倒计时间隔相比意义重大的时间来执行时,这才是相关的。

最新更新