Java Android截击如何在多次发送中捕获超时错误
当互联网连接恢复时,我使用截击发送gps定位。例如,我有100条记录要发送。有时网络连接很慢,或者是手机正在丢失它们。超时设置为3秒,因此并非所有记录都在发送 我的问题是,如何从retryPolicy捕获错误超时? 我想知道你什么时候必须重新开始发送。下面是我的代码:Java Android截击如何在多次发送中捕获超时错误,java,android,android-volley,Java,Android,Android Volley,当互联网连接恢复时,我使用截击发送gps定位。例如,我有100条记录要发送。有时网络连接很慢,或者是手机正在丢失它们。超时设置为3秒,因此并非所有记录都在发送 我的问题是,如何从retryPolicy捕获错误超时? 我想知道你什么时候必须重新开始发送。下面是我的代码: stringRequest = new StringRequest(Request.Method.POST, syncDbDataDrive.SERVER_URL_POSITIONS,
stringRequest = new StringRequest(Request.Method.POST, syncDbDataDrive.SERVER_URL_POSITIONS,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
String Response = jsonObject.getString("response");
if (Response.equals("OK")) {
syncDbHelper.updateLocalPositions(ID, Country, syncDbDataDrive.SYNC_STATUS_OK, database);
rowAdd++;
if (rowAdd == countRow) {
database.close();
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("latitude", Latitude);
params.put("longitude", Longitude);
params.put("country", Country);
return params;
}
};
stringRequest.setRetryPolicy(new DefaultRetryPolicy(
3000, // timeout in miliseconds
0, // number of times retry
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
syncVolleySilgleton.getInstance(context).addToRequestQue(stringRequest);
试试这个,在这里你可以检查错误是否是TimeoutError,如果有超时错误你可以调用你的任务
stringRequest.setRetryPolicy(new RetryPolicy() {
@Override
public int getCurrentTimeout() {
return 50000;
}
@Override
public int getCurrentRetryCount() {
return 50000;
}
@Override
public void retry(VolleyError error) throws VolleyError {
if(error instanceof TimeoutError){
// your stuf
}
}
});
@T.诺瓦基,如果答案对你们有帮助,请投票赞成,并接受这个答案。