我正在尝试实现一个 CountDownTimer 来发布可视文本倒计时,直到我到达 0,然后发送特定消息。一切正常,直到我达到 3 秒,它调用了我的 done() 方法两次;一次还剩 3 秒,一次在计数器完成时。
我确信调用 done() 的唯一时间是调用此 CountDownTimer() 中的 onFinish() 时。我不知道为什么它会调用两次,并且始终同时调用。
我的 Java 代码:
mainCounter = new CountDownTimer(30000, 1000){
@Override
public void onTick(long millisUntilDone){
int hours = (int) (millisUntilDone/3600000);
int mins = 0, secs = 0;
long timeLeft = millisUntilDone % 3600000;
if((int)timeLeft != 0){
mins = (int) (timeLeft/60000);
}
long timeLeftStill = timeLeft % 60000;
if((int)timeLeftStill != 0){
secs = (int) (timeLeftStill/1000);
}
((TextView)findViewById(R.id.timer_label)).setText("You have " + hours + " hours, " + mins + " mins, " + secs + " secs left");
}
@Override
public void onFinish() {
// Send Message, Out of Time
((TextView)findViewById(R.id.timer_label)).setText("MESSAGE!");
num++;
done(); //My Own Method
this.cancel();
}
}.start();
我有另一个可以完美运行的计数器,我已将其注释掉以确保它不会影响此计数器,就像我说的那样,这个计数器可以正常工作,直到我剩下 3 秒。