Android凌空超时无法正常工作

时间:2014-10-06 10:53:41

标签: android android-volley

我正在使用android排球,当我发出请求时,我收到超时错误。我使用

增加了超时
request.setRetryPolicy(new DefaultRetryPolicy(
                5000, 
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

这个实现的问题是我得到request.finish:7123ms的结果。我应该采取timeoutError。关于android超时我有点不明白吗?如何将超时精确设置为5000ms?

编辑: 我在prasadthangavel.blogspot发现,在每次重试时,请求都会增加时间。我认为这应该是我的问题,但是 如果我编辑我的请求

request.setRetryPolicy(new DefaultRetryPolicy(
                5000, 0,0));  

根据android volley默认重试策略

@Override
    public void retry(VolleyError error) throws VolleyError {
        mCurrentRetryCount++;
        mCurrentTimeoutMs += (mCurrentTimeoutMs * mBackoffMultiplier);
        if (!hasAttemptRemaining()) {
            throw error;
        }
    }
    /**
     * Returns true if this policy has attempts remaining, false otherwise.
     */
    protected boolean hasAttemptRemaining() {
        return mCurrentRetryCount <= mMaxNumRetries;
    }`

不会进行其他重试。但这也没有解决我的问题。我有一些请求正在执行request.finish 7200ms。为什么每次连接时间或读取时间都超过5000毫秒时都不会抛出异常?

2 个答案:

答案 0 :(得分:1)

检查您的代码

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

将timout设置为5000毫秒,并且不重试DefaultRetryPolicy.DEFAULT_MAX_RETRIES,其值为1,这意味着。对于第一个请求,您的请求超时为5秒,对于重试请求,请求超时为5秒。在你的情况下,两个请求意味着10秒。请求超时将发生。

答案 1 :(得分:0)

Volley设置默认Socket&amp;对于所有请求,ConnectionTImeout为5秒。

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