ボクココ

個人開発に関するテックブログ

Volley の2重リクエストを防ぐ

結構よく起きるので、メモ。

これが起きてしまう原因は、サーバのレスポンス速度が遅いことにある。

サーバ内でメール送信してたりとか(本当はキューに溜めるべきだが)、アクセスが多くなってきたりしたりとかで遅くなると、Volleyはもう一回リクエストを送ってしまうのだ。

対処法

Volley の RetryPolicy を更新してあげればよい。

    public RequestQueue getRequestQueue() {
        if (mRequestQueue == null) {
            mRequestQueue = Volley.newRequestQueue(getApplicationContext());
        }

        return mRequestQueue;
    }

    public <T> void addToRequestQueue(Request<T> req) {
        req.setTag(TAG);
        req.setRetryPolicy(new DefaultRetryPolicy(50 * 1000, 0, 1.0f));
        getRequestQueue().add(req);
    }

これで結構待ってみてくれるようになって、一件落着。