酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Androidで繰り返し発生するタイマーを使う

100msごとに実行されるタイマーを使いたかったので調べました。

/** タイマー */
Timer timer = null;

/** タイマーを開始する */
private void startTimer() {

    int firstInterval = 100;
    int interval = 100;

    // Timerオブジェクトの生成
     timer = new Timer();

    // タイマーを開始する
    timer.schedule(new TimerTask() {

        // タイマーが満了した
        @Override
        public void run() {
            handler.post(new Runnable() {
                @Override
                public void run() {
                    Log.w("tag", "Timer has expired.");
                }
            });
        }

    }, firstInterval, interval);
}

/** タイマーを停止する */
private void stopTimer() {
    this.timer.cancel();
    this.timer.purge();
    this.timer = null;
}

一度、cancelメソッドが実行されるとタイマーは破棄されてしまうらしく、2回目から呼び出すときにはTimerオブジェクトを再度生成する必要がある。