La politica di riprova della richiesta Volley non considera il timeout


11

Ho impostato 1500 come initialTimeoutMs in DefaultRetryPolicy come di seguito ma non considera il timeout:

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

Ho disconnesso il WiFi sul mio dispositivo per testare il timeout e ho visto queste volte nel Logcat :

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

Ci sono voluti più di 20 secondi mentre mi aspettavo di catturare onResponse o onError dopo 1,5 secondi !!!


Credo che ci sia una logica di nuovo tentativo dopo un backoff. Quindi la richiesta viene inviata, dopo 1,5 secondi scade e quindi riprova dopo un po 'di tempo casuale. Complessivamente il numero di pensionati è DefaultRetryPolicy.DEFAULT_MAX_RETRIES
Abhishek Ranjan

qual è il tuo valore per max_tries e backoff_multiplies?
Karan Khurana,

Entrambi hanno valori predefiniti. in DefaultRetryPolicy.java:public static final int DEFAULT_MAX_RETRIES = 1; public static final float DEFAULT_BACKOFF_MULT = 1f;
Alireza Noorali

Risposte:



0

Usa 5 secondi perché 15 secondi molto di più per dare in timeout.

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));
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.