La política de reintento de solicitud de volea no considera el tiempo de espera


11

He configurado 1500 como initialTimeoutMs en DefaultRetryPolicy como se muestra a continuación, pero no considera el tiempo de espera:

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

Desconecté el WiFi en mi dispositivo para probar su tiempo de espera y vi estos tiempos en Logcat :

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

¡Tomó más de 20 segundos mientras esperaba capturar onResponse o onError después de 1.5 segundos!


Creo que hay una lógica de reintento después de un retroceso. Entonces, la solicitud se envía, después de 1,5 segundos, se agota el tiempo de espera y luego vuelve a intentarlo después de un tiempo aleatorio. En general, el número de retiros es DefaultRetryPolicy.DEFAULT_MAX_RETRIES
Abhishek Ranjan

¿Cuál es su valor para max_tries y backoff_multiplies?
Karan Khurana

Ambos tienen valores predeterminados. en DefaultRetryPolicy.java:public static final int DEFAULT_MAX_RETRIES = 1; public static final float DEFAULT_BACKOFF_MULT = 1f;
Alireza Noorali

Respuestas:



0

Use 5 segundos porque 15 segundos es mucho más para dar tiempo de espera.

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));
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.