日々精進

新しく学んだことを書き留めていきます

Androidで処理をメインスレッドにスイッチしつつDelayをかける

ある秒数だけ待ってメインスレッドである処理をしたい場合、HandlerのpostDelayedを使えば良い。遅延実行させるのにTimerオブジェクト使ってたけど、いらなかった。。 修正前のコードは以下。

    retryTimer = new Timer();
    retryTimer.schedule(new TimerTask() {
        @Override
        public void run() {
            handler.post(new Runnable() {
                @Override
                public void run() {
                    sendRequest();
                }
            });
        }
    }, RETRY_DELAY_MILLSEC);

修正後のコードは以下。

private Runnable retryRequestCallback = new Runnable() {
    @Override
    public void run() {
        sendRequest();
    }
};

    ...
    handler.postDelayed(retryRequestCallback, RETRY_DELAY_MILLSEC);