サーチ…


パラメーター

パラメータ詳細
long millisInFuture タイマーが実行される総継続時間(将来、タイマーを終了させるまでの時間)。ミリ秒単位。
long countDownInterval タイマーの更新を受信する間隔です。ミリ秒単位。
long millisUntilFinished CountDownTimerの残り時間をonTick()で提供されるパラメータです。ミリ秒単位

備考

CountDownTimerは非常に希薄なクラスです - それはとてもうまくいきます。 CountDownTimerを開始/キャンセルできるのは2番目の例に示すように、一時停止/再開機能を実装する必要があります。より複雑な機能や無期限に実行するタイマーを指定するには、 Timerオブジェクトを使用します。

シンプルなカウントダウンタイマーの作成

CountDownTimerは、設定した期間、一定の間隔で繰り返しアクションを実行する場合に便利です。この例では、毎秒30秒間テキストビューを更新し、残り時間を示します。タイマーが終了すると、TextViewに「完了」と設定されます。

TextView textView = (TextView)findViewById(R.id.text_view);

CountDownTimer countDownTimer = new CountDownTimer(30000, 1000) {
    public void onTick(long millisUntilFinished) {
        textView.setText(String.format(Locale.getDefault(), "%d sec.", millisUntilFinished / 1000L));
    }

    public void onFinish() {
        textView.setText("Done.");
    }
}.start();

より複雑な例

この例では、アクティビティのライフサイクルに基づいてCountDownTimerを一時停止または再開します。

private static final long TIMER_DURATION = 60000L;
private static final long TIMER_INTERVAL = 1000L;

private CountDownTimer mCountDownTimer;
private TextView textView;

private long mTimeRemaining;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    textView = (TextView)findViewById(R.id.text_view); // Define in xml layout.

    mCountDownTimer = new CountDownTimer(TIMER_DURATION, TIMER_INTERVAL) {
        
        @Override
        public void onTick(long millisUntilFinished) {
            textView.setText(String.format(Locale.getDefault(), "%d sec.", millisUntilFinished / 1000L));
            mTimeRemaining = millisUntilFinished; // Saving timeRemaining in Activity for pause/resume of CountDownTimer.
        }

        @Override
        public void onFinish() {
            textView.setText("Done.");
        }
    }.start();
}


@Override
protected void onResume() {
    super.onResume();
    
    if (mCountDownTimer == null) { // Timer was paused, re-create with saved time.
        mCountDownTimer = new CountDownTimer(timeRemaining, INTERVAL) {
            @Override
            public void onTick(long millisUntilFinished) {
                textView.setText(String.format(Locale.getDefault(), "%d sec.", millisUntilFinished / 1000L));
                timeRemaining = millisUntilFinished;
            }

            @Override
            public void onFinish() {
                textView.setText("Done.");
            }
        }.start();
    }
}

@Override
protected void onPause() {
    super.onPause();
    mCountDownTimer.cancel();
    mCountDownTimer = null;
}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow