Для обробки Android Volley Timeout потрібно використовувати RetryPolicy
RetryPolicy
- Volley пропонує простий спосіб реалізувати RetryPolicy для ваших запитів.
- Volley встановлює Socket & ConnectionTImeout за замовчуванням на 5 секунд для всіх запитів.
RetryPolicy
це інтерфейс, у якому вам потрібно реалізувати свою логіку того, як ви хочете повторити певний запит, коли відбудеться час очікування.
Він стосується цих трьох параметрів
- Тайм-аут - Вказує час очікування розетки в мілісах за кожну спробу.
- Кількість спроб - кількість спроб повторного спроби.
- Back Off Multiplier - множник, який використовується для визначення експоненціального часу, встановленого для розетки для кожної спроби повторної спроби.
Для екс. Якщо RetryPolicy створено з цими значеннями
Час очікування - 3000 мс, кількість спроб повтору - 2, множник відключення - 2,0
Спроба 1:
- time = time + (час * Back Multiplier);
- час = 3000 + 6000 = 9000мс
- Socket Timeout = час;
- Запит відправлений із розеткою з розеткою 9 сек
Повторна спроба 2:
- time = time + (час * Back Multiplier);
- час = 9000 + 18000 = 27000мс
- Socket Timeout = час;
- Запит відправлений з розеткою з розеткою 27 сек
Отже, наприкінці спроби 2 спроби повторно, якщо все-таки відбудеться час вимкнення Socket, Воллі закине TimeoutError
ваш обробник відповіді на помилку інтерфейсу.
//Set a retry policy in case of SocketTimeout & ConnectionTimeout Exceptions.
//Volley does retry for you if you have specified the policy.
jsonObjRequest.setRetryPolicy(new DefaultRetryPolicy(5000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));