Para lidar com o Android Volley Timeout, você precisa usar RetryPolicy
RetryPolicy
- O Volley fornece uma maneira fácil de implementar sua RetryPolicy para suas solicitações.
- O Volley define o Socket & ConnectionTImeout padrão como 5 segundos para todas as solicitações.
RetryPolicy
é uma interface em que você precisa implementar sua lógica de como deseja repetir uma solicitação específica quando ocorrer um tempo limite.
Ele lida com esses três parâmetros
- Tempo limite - especifica o tempo limite do soquete em milis por cada tentativa de nova tentativa.
- Número de tentativas - Número de tentativas de repetição.
- Multiplicador de Desvio - Um multiplicador usado para determinar o tempo exponencial definido como soquete para cada tentativa de repetição.
Por ex. Se RetryPolicy for criado com esses valores
Tempo limite - 3000 ms, Número de tentativas de repetição - 2, Multiplicador de retirada - 2,0
Tente novamente a tentativa 1:
- time = time + (hora * Multiplicador de recuo);
- tempo = 3000 + 6000 = 9000ms
- Tempo limite do soquete = tempo;
- Pedido enviado com tempo limite de soquete de 9 segundos
Tente novamente a tentativa 2:
- time = time + (hora * Multiplicador de recuo);
- tempo = 9000 + 18000 = 27000ms
- Tempo limite do soquete = tempo;
- Pedido enviado com tempo limite de soquete de 27 segundos
Portanto, no final da Tentativa de Repetição 2, se o Tempo Limite do Soquete ainda ocorrer, o Volley lançaria um TimeoutError
no seu manipulador de resposta de Erro 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));