kojiko-android’s blog

開発中にハマった時の解決策や、忘れがちなことを残しておきます。

CountDownTimerを使う

Android studioで、カウントダウンタイマーを使う。

 5秒後に終了処理、その間に1秒ごとに周期的な処理をさせたい場合、

CountDownTimer countDownTimer;
countDownTimer = new CountDownTimer(5000,1000) {
    @Override
    public void onTick(long millisUntilFinished) {

    //周期的な処理

    @Override
    public void onFinish() {

    //終了時の処理

    }
};
countDownTimer.start();


 スタートを忘れずに。

 計測をやめるときは

countDownTimer.cancel();

  • 第一引数に、何ミリ秒後に終了するか、第二引数に、何ミリ秒ごとに周期的な処理をするかを指定します。
  • カウントダウンタイマーは途中停止、再開はできません。
  • 残り何秒か?もわかりません。

残り何秒か?を取得するには、カウントダウンタイマーを継承して機能を追加するか、
終了予定時刻を変数に保存しておき、onTickのたびに、
終了時刻(ミリ秒) - 現在時刻(ミリ秒)
を計算するなどで実現できます。
その場合、インターバルに1000を指定するとたまにずれて1秒以上表示が変わらなかったりと、ユーザーの信頼性に影響がでてしまうので、
周期を600とか適当に短くしておくといいかも。