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 !!!


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));
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.