Zasady ponawiania próśb o salwę nie uwzględniają limitu czasu

11

Ustawiłem 1500 jako initialTimeoutMs w DefaultRetryPolicy jak poniżej, ale nie uwzględnia limitu czasu:

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

Odłączyłem Wi-Fi na moim urządzeniu, aby przetestować limit czasu i zobaczyłem te czasy w Logcat :

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

Zajęło mi to więcej niż 20 sekund, podczas gdy spodziewałem się złapać albo onResponse, albo onError po 1,5 sekundy !!!

Alireza Noorali
źródło
Uważam, że po wycofaniu istnieje logika ponownych prób. Tak więc żądanie jest wysyłane, po upływie 1,5 sekundy upłynie limit czasu, a następnie ponowna próba po pewnym czasie losowym. Ogólna liczba wycofań to DefaultRetryPolicy.DEFAULT_MAX_RETRIES
Abhishek Ranjan
jaka jest twoja wartość dla max_tries i backoff_multiplies?
Karan Khurana,
Oba mają wartości domyślne. w DefaultRetryPolicy.java:public static final int DEFAULT_MAX_RETRIES = 1; public static final float DEFAULT_BACKOFF_MULT = 1f;
Alireza Noorali

Odpowiedzi:

0

Użyj 5 sekund, ponieważ 15 sekund to znacznie więcej, aby dać czas oczekiwania.

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

źródło