原文:
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
解决方案
1.对Request设置重试策略时,更改默认超时时间,
<code class="hljs cs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"> request.setRetryPolicy(
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> DefaultRetryPolicy(
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">500000</span>,<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//默认超时时间,应设置一个稍微大点儿的,例如本处的500000</span>
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//默认最大尝试次数</span>
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT
)
);</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li></ul>
2.在HurlStack中的openConnection方法中,在相应段落增加
<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"> connection<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.setChunkedStreamingMode</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>)</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
PS:在实际项目中,我用了第一种方案,就解决了我的问题。。。
版权声明:本文为博主原创文章,未经博主允许不得转载。