Bei der Volley-Anforderungswiederholungsrichtlinie wird das Zeitlimit nicht berücksichtigt

11

Ich habe 1500 als initialTimeoutMs in DefaultRetryPolicy wie folgt festgelegt, aber das Zeitlimit wird nicht berücksichtigt:

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

Ich habe das WLAN auf meinem Gerät getrennt, um das Zeitlimit zu testen, und habe diese Zeiten im Logcat gesehen :

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

Es dauerte mehr als 20 Sekunden, während ich erwartete, nach 1,5 Sekunden entweder onResponse oder onError zu fangen !!!

Alireza Noorali
quelle
Ich glaube, dass es nach einem Backoff eine Wiederholungslogik gibt. Die Anfrage wird also gesendet, nach 1,5 Sekunden läuft sie ab und versucht es nach einer zufälligen Zeit erneut. Insgesamt ist die Anzahl der Pensionierungen DefaultRetryPolicy.DEFAULT_MAX_RETRIES
Abhishek Ranjan
Was ist Ihr Wert für max_tries und backoff_multiplies?
Karan Khurana
Beide haben Standardwerte. in DefaultRetryPolicy.java:public static final int DEFAULT_MAX_RETRIES = 1; public static final float DEFAULT_BACKOFF_MULT = 1f;
Alireza Noorali

Antworten:

0

Verwenden Sie 5 Sek., Da 15 Sek. Viel mehr Zeit zum Ausgeben von Timeout benötigen.

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));

quelle