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 !!!


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));
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.