我正在构建一个Android应用程序,其中一些数据从Android设备发送到服务器,每1秒30秒。 (共有30个服务器请求)。
我正在使用for
循环:
for(i=0;i<30;i++){
//Some data computation
JsonObjectRequest req = new JsonObjectRequest(url, new JSONObject(params),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
VolleyLog.v("Response:%n %s", response.toString(4));
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
}
});
}
我的服务器端有超过30个用户。 JsonObjectRequest是否在每次迭代中发送多个请求?
答案 0 :(得分:1)
默认情况下,Volley会向服务器发出多个请求(默认重试策略)。
可以在DefaultRetryPolicy.java
中找到这些设置。
因此,根据此默认策略,Volley会尝试等待2500毫秒的响应,但是如果在此时间范围内未收到响应,则会重试DEFAULT_MAX_RETRIES设置的数字,即1.并使用DEFAULT_BACKOFF_MULT变量确定每次重试尝试设置为套接字的指数时间。
/** The default socket timeout in milliseconds */
public static final int DEFAULT_TIMEOUT_MS = 2500;
/** The default number of retries */
public static final int DEFAULT_MAX_RETRIES = 0;
/** The default backoff multiplier */
public static final float DEFAULT_BACKOFF_MULT = 1f;
现在,要停止多个请求,可以使用请求对象的setRetryPolicy()方法为请求对象配置重试策略。
//req = Request
req.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 0,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
参考:Here