ในการจัดการ Android Volley Timeout คุณต้องใช้ RetryPolicy
RetryPolicy
- วอลเล่มอบวิธีที่ง่ายในการปรับใช้ RetryPolicy ของคุณสำหรับคำขอของคุณ
- วอลเล่ย์ตั้งซ็อกเก็ตและการเชื่อมต่อเริ่มต้น 5 นาทีสำหรับคำขอทั้งหมด
RetryPolicy
เป็นอินเทอร์เฟซที่คุณต้องการใช้ตรรกะของคุณว่าคุณต้องการลองคำขอเฉพาะเมื่อเกิดการหมดเวลา
มันเกี่ยวข้องกับพารามิเตอร์ทั้งสามนี้
- การหมดเวลา - ระบุการหมดเวลาซ็อกเก็ตในหน่วยมิลลิวินาทีต่อทุกครั้งที่ลองใหม่
- Number Of Retries - จำนวนครั้งที่พยายามลองใหม่
- Back Off Multiplier - ตัวคูณที่ใช้เพื่อกำหนดเวลาเอ็กซ์โพเนนเชียลที่ตั้งค่าเป็นซ็อกเก็ตสำหรับความพยายามทุกครั้ง
สำหรับอดีต หาก RetryPolicy ถูกสร้างขึ้นด้วยค่าเหล่านี้
หมดเวลา - 3000 ms, จำนวนครั้งที่ลองใหม่ - 2, ตัวคูณย้อนกลับ - 2.0
ลองใหม่อีกครั้ง 1:
- time = time + (เวลา * Back Off Multiplier);
- เวลา = 3000 + 6000 = 9000ms
- Socket Timeout = time;
- คำขอส่งไปพร้อมกับ Socket Timeout 9 วินาที
ลองใหม่อีกครั้ง 2:
- time = time + (เวลา * Back Off Multiplier);
- เวลา = 9000 + 18000 = 27000ms
- Socket Timeout = time;
- คำขอทำการจัดส่งด้วย Socket Timeout 27 Secs
ดังนั้นในตอนท้ายของRetry Attempt 2หากยังคงเกิด Socket Timeout เกิดขึ้น Volley จะส่งTimeoutError
ตัวจัดการการตอบสนองข้อผิดพลาด UI ของคุณ
//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));