一、代码如下:
myRequest.setRetryPolicy(new DefaultRetryPolicy(
MY_SOCKET_TIMEOUT_MS,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
注:一共有3个参数
MY_SOCKET_TIMEOUT_MS,默认值2500, 指定Socket在每次尝试重连的超时时间单位为ms
DefaultRetryPolicy.DEFAULT_MAX_RETRIES 重连次数,默认值为1
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT 默认值为1f,一个乘法器,用于为每次重试尝试确定socket的指数时间设置
所以volley默认的设置的超时时间是5s。
二、具体超时时间的算法
计算公式如下:
Timeout - 3000 secs, Num of Attempt - 2, Back Off Multiplier - 2
第一次链接:
time = time + (time * Back Off Multiplier );
time = 3000 + 6000 = 9000
Socket Timeout = time;
第一次重连:
time = time + (time * Back Off Multiplier );
time = 9000 + 18000 = 27000
Socket Timeout = time;
所以请求socket超时时间为27秒,在27秒后会抛出TimeoutError异常。
喜欢 就关注吧,欢迎投稿!