朋友们,我有一个简单的计时器,假设它每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(的实现需要一段与倒计时间隔相比意义重大的时间来执行时,这才是相关的。