Để xử lý Android Volley Timeout, bạn cần sử dụng RetryPolicy
RetryPolicy
- Volley cung cấp một cách dễ dàng để thực hiện RetryPolicy cho các yêu cầu của bạn.
- Volley đặt socket & ConnectionTImeout mặc định thành 5 giây cho tất cả các yêu cầu.
RetryPolicy
là một giao diện nơi bạn cần triển khai logic của mình về cách bạn muốn thử lại một yêu cầu cụ thể khi hết thời gian chờ.
Nó liên quan đến ba tham số này
- Hết giờ - Chỉ định Hết thời gian chờ tính bằng mili giây cho mỗi lần thử lại.
- Số lần thử lại - Số lần thử lại được thử.
- Back Off Multiplier - Một hệ số nhân được sử dụng để xác định thời gian theo cấp số nhân được đặt thành ổ cắm cho mỗi lần thử lại.
Dành cho người cũ Nếu RetryPolicy được tạo với các giá trị này
Hết thời gian - 3000 ms, Nhiều lần thử lại - 2, Tắt hệ số nhân - 2.0
Thử lại 1:
- time = time + (time * Back Off Multiplier);
- thời gian = 3000 + 6000 = 9000ms
- Hết thời gian chờ = thời gian;
- Yêu cầu được gửi đi với thời gian chờ của socket là 9 giây
Thử lại 2:
- time = time + (time * Back Off Multiplier);
- thời gian = 9000 + 18000 = 27000ms
- Hết thời gian chờ = thời gian;
- Yêu cầu được gửi đi với thời gian chờ là 27 giây
Vì vậy, khi kết thúc Thử lại 2 nếu vẫn xảy ra Hết thời gian chờ, Volley sẽ ném TimeoutError
vào trình xử lý phản hồi Lỗi UI của bạn.
//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));