Volleyリクエストの再試行ポリシーはタイムアウトを考慮していません


11

以下のようにDefaultRetryPolicyのinitialTimeoutMsとして1500を設定しましたが、タイムアウトを考慮していません。

request.setRetryPolicy(new DefaultRetryPolicy(1500
        , DefaultRetryPolicy.DEFAULT_MAX_RETRIES
        , DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

デバイスのWiFiを切断してタイムアウトをテストしましたが、Logcatでこれらの時間を確認しました

2019-12-16 14:28:15.892 I/MyClass: request sent
2019-12-16 14:28:35.930 I/MyClass: request caught onError

1.5秒後にonResponseまたはonErrorをキャッチするのに20秒以上かかりました。


バックオフ後に再試行ロジックがあると思います。したがって、リクエストは送信され、1.5秒後にタイムアウトし、ランダムな時間の後に再試行します。全体として、リタイアの数はDefaultRetryPolicy.DEFAULT_MAX_RETRIESです
Abhishek Ranjan

max_triesとbackoff_multipliesの値は何ですか?
Karan Khurana

どちらにもデフォルト値があります。DefaultRetryPolicy.java中:public static final int DEFAULT_MAX_RETRIES = 1; public static final float DEFAULT_BACKOFF_MULT = 1f;
アリレザNoorali

回答:



0

15秒はタイムアウトを与えるためにはるかに長いので、5秒を使用します。

int TIME_OUT = 500; //use 5 sec it will work fine with it..

request.setRetryPolicy(new DefaultRetryPolicy(
    TIME_OUT, 
    DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
    DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.