Java Android截击如何在多次发送中捕获超时错误

Java Android截击如何在多次发送中捕获超时错误,java,android,android-volley,Java,Android,Android Volley,当互联网连接恢复时,我使用截击发送gps定位。例如,我有100条记录要发送。有时网络连接很慢,或者是手机正在丢失它们。超时设置为3秒,因此并非所有记录都在发送 我的问题是,如何从retryPolicy捕获错误超时? 我想知道你什么时候必须重新开始发送。下面是我的代码: stringRequest = new StringRequest(Request.Method.POST, syncDbDataDrive.SERVER_URL_POSITIONS,

当互联网连接恢复时,我使用截击发送gps定位。例如,我有100条记录要发送。有时网络连接很慢,或者是手机正在丢失它们。超时设置为3秒,因此并非所有记录都在发送

我的问题是,如何从retryPolicy捕获错误超时? 我想知道你什么时候必须重新开始发送。下面是我的代码:

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.诺瓦基,如果答案对你们有帮助,请投票赞成,并接受这个答案。