CountDownTimer を実装して、0 になるまで視覚的なテキストのカウントダウンを投稿してから、特定のメッセージを送信しようとしています。3 秒になるまではすべて正常に動作し、done() メソッドが 2 回呼び出されます。残り3秒で1回、カウンター終了時に1回。
done() が呼び出されるのは、この CountDownTimer() の onFinish() が呼び出されたときだけだと確信しています。なぜそれが2回、一貫して同時に呼び出されるのか、私にはわかりません。
私の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秒になるまで正常に機能します。