La politique de nouvelle tentative de demande de Volley ne prend pas en compte le délai d'attente


11

J'ai défini 1500 comme initialTimeoutMs dans DefaultRetryPolicy comme ci-dessous, mais il ne prend pas en compte le délai d'expiration:

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

J'ai déconnecté le WiFi sur mon appareil pour tester son timeout et j'ai vu ces temps dans le Logcat :

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

Cela a pris plus de 20 secondes alors que je m'attendais à attraper onResponse ou onError après 1,5 seconde !!!


Je crois qu'il existe une logique de nouvelle tentative après une interruption. Ainsi, la demande est envoyée, après 1,5 seconde, elle expire puis réessaye après un certain temps aléatoire. Globalement, le nombre de départs à la retraite est DefaultRetryPolicy.DEFAULT_MAX_RETRIES
Abhishek Ranjan

quelle est votre valeur pour max_tries et backoff_multiplies?
Karan Khurana

Les deux ont des valeurs par défaut. dans DefaultRetryPolicy.java:public static final int DEFAULT_MAX_RETRIES = 1; public static final float DEFAULT_BACKOFF_MULT = 1f;
Alireza Noorali

Réponses:



0

Utilisez 5 sec car 15 sec beaucoup plus pour donner un timeout ..

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));
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.