ある秒数だけ待ってメインスレッドである処理をしたい場合、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);