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

Alireza Noorali
la source
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));

la source