A política de repetição de solicitação de vôlei não considera o tempo limite

11

Eu configurei 1500 como initialTimeoutMs em DefaultRetryPolicy como abaixo, mas ele não considera o tempo limite:

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

Desconectei o Wi-Fi no meu dispositivo para testar o tempo limite e vi estes horários no Logcat :

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

Demorou mais de 20 segundos enquanto esperava capturar onResponse ou onError após 1,5 segundos !!!

Alireza Noorali
fonte
Acredito que exista uma lógica de nova tentativa após um recuo. Portanto, a solicitação é enviada, após 1,5 segundos, atinge o tempo limite e, em seguida, tenta novamente após algum tempo aleatório. No geral, o número de aposentadorias é DefaultRetryPolicy.DEFAULT_MAX_RETRIES
Abhishek Ranjan
qual é o seu valor para max_tries e backoff_multiplies?
Karan Khurana
Ambos têm valores padrão. em DefaultRetryPolicy.java:public static final int DEFAULT_MAX_RETRIES = 1; public static final float DEFAULT_BACKOFF_MULT = 1f;
Alireza Noorali

Respostas:

0

Use 5 s porque 15 s é muito mais para dar tempo limite.

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));

fonte