volley超時和重復請求問題


原文: 

Android Volley double post when have slow request 
I have a problem with Volley POST request on slow network

這哥們兒遇到的問題,在國內的我同樣遇到了 
情況描述: 
一直用Volley很正常,調用服務器接口發布內容,成功就發布一條,不成功就沒有; 
最近服務器端在接收到我上傳的圖片或視頻之后,做了處理,導致其接收速度和往常一樣,但是對APP端的響應速度延遲了1-3秒,使得發布內容加倍,有時一條,有時兩條三條, 
查看log日志,自己手動調用mRequestQueue.add(request)以及mRequestQueue.start()的次數始終為1,但是與服務器聯調時,服務器端的確被調用了兩三次;谷歌后得知,這算是volley的一個bug吧(具體應該不算) 
相應討論:google groups

解決方案

方案一  對Request設置重試策略時,更改默認超時時間
        request.setRetryPolicy( new DefaultRetryPolicy( 500000,//默認超時時間,應設置一個稍微大點兒的,例如本處的500000 
        DefaultRetryPolicy.DEFAULT_MAX_RETRIES,//默認最大嘗試次數 
        DefaultRetryPolicy.DEFAULT_BACKOFF_MULT ) );
 代碼 :request.setRetryPolicy(new DefaultRetryPolicy(50000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));   
        DEFAULT_BACKOFF_MULT:​對於請求失敗之后的請求,並不會隔相同的時間去請求Server,不會以線性的時間增長去請求,而是一個曲線增長,一次比一次長,如果backoff因子是2,當前超時為3,即下次再請求隔6S​
方案二  在HurlStack中的openConnection方法中,在相應段落增加
        connection.setChunkedStreamingMode(0)
PS:在實際項目中,我用了第一種方案,就解決了我的問題。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM