【发布时间】:2014-11-30 14:57:04
【问题描述】:
我正在使用 android volley,当我发出请求时出现超时错误。我使用
增加了超时request.setRetryPolicy(new DefaultRetryPolicy(
5000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
这个实现的问题是我得到了 request.finish: 7123ms 的结果。我应该采取 timeoutError 。我对android超时有什么不了解吗?如何将超时精确设置为 5000 毫秒?
编辑: 我在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 执行。为什么每次连接时间或读取时间大于 5000ms 时都没有抛出异常?
【问题讨论】:
-
我应该在哪里打电话
setRequestPolicy()?我面临着类似的超时问题。 -
你能解决这个问题吗?我也有同样的问题。我在想也许 RetryPolicy 仅适用于重试而不适用于初始请求,也许?