นโยบายการลองส่งคำขอ Volley ไม่ได้พิจารณาการหมดเวลา


11

ฉันตั้งค่า 1500 เป็นinitialTimeoutMsในDefaultRetryPolicyเป็นด้านล่าง แต่ไม่ได้พิจารณาการหมดเวลา:

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

ฉันตัดการเชื่อมต่อ WiFi บนอุปกรณ์ของฉันเพื่อทดสอบว่าหมดเวลาและฉันเห็นเวลาเหล่านี้ในLogcat :

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

ใช้เวลามากกว่า 20 วินาทีในขณะที่ฉันคาดว่าจะจับทั้ง onResponse หรือ onError หลังจาก 1.5 วินาที !!!


ฉันเชื่อว่ามีตรรกะลองอีกครั้งหลังจากแบ็คออฟ ดังนั้นคำขอจะถูกส่งหลังจาก 1.5 วินาทีมันหมดเวลาแล้วลองอีกครั้งหลังจากเวลาสุ่ม โดยรวมแล้วจำนวนการออกจากตำแหน่งคือ DefaultRetryPolicy.DEFAULT_MAX_RETRIES
Abhishek Ranjan

มูลค่าของคุณสำหรับ max_tries และ backoff_multiplies คืออะไร
Karan Khurana

ทั้งคู่มีค่าเริ่มต้น ใน DefaultRetryPolicy.java:public static final int DEFAULT_MAX_RETRIES = 1; public static final float DEFAULT_BACKOFF_MULT = 1f;
Alireza Noorali

คำตอบ:



0

ใช้ 5 วินาทีเพราะ 15 วินาทีมันมีมากสำหรับการหมดเวลา

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));
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.