Para manejar Android Volley Timeout necesita usar RetryPolicy
RetryPolicy
- Volley proporciona una manera fácil de implementar su RetryPolicy para sus solicitudes.
- Volley establece el valor predeterminado de Socket & ConnectionTImeout en 5 segundos para todas las solicitudes.
RetryPolicy
es una interfaz en la que necesita implementar su lógica de cómo desea volver a intentar una solicitud en particular cuando ocurre un tiempo de espera.
Se ocupa de estos tres parámetros.
- Tiempo de espera: especifica el tiempo de espera de socket en milis por cada intento de reintento.
- Número de reintentos: número de veces que se intenta reintentar.
- Multiplicador de retroceso: un multiplicador que se utiliza para determinar el tiempo exponencial establecido en socket para cada intento de reintento.
Por ej. Si RetryPolicy se crea con estos valores
Tiempo de espera: 3000 ms, número de intentos de reintento - 2, multiplicador de retroceso - 2.0
Intento de reintento 1:
- tiempo = tiempo + (tiempo * Multiplicador de retroceso);
- tiempo = 3000 + 6000 = 9000ms
- Socket Timeout = tiempo;
- Solicitud enviada con tiempo de espera de 9 segundos
Intento de reintento 2:
- tiempo = tiempo + (tiempo * Multiplicador de retroceso);
- tiempo = 9000 + 18000 = 27000ms
- Socket Timeout = tiempo;
- Solicitud enviada con un tiempo de espera de 27 segundos
Por lo tanto, al final del Reintento Intento 2 si todavía se agota el tiempo de espera de Socket, Volley arrojaría un TimeoutError
controlador de respuesta de error de UI.
//Set a retry policy in case of SocketTimeout & ConnectionTimeout Exceptions.
//Volley does retry for you if you have specified the policy.
jsonObjRequest.setRetryPolicy(new DefaultRetryPolicy(5000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));