首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android如何在多个发送中捕获超时错误

Android如何在多个发送中捕获超时错误
EN

Stack Overflow用户
提问于 2018-03-09 12:38:47
回答 1查看 852关注 0票数 2

当互联网连接恢复时,我用截击发送gps定位码。因此,例如,我有100条记录要发送。有时候,互联网连接太慢了,或者是电话松了。超时设置为3秒,所以并非所有记录都在发送。

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

代码语言:javascript
运行
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-09 13:31:23

尝试一下,这里您可以检查错误是否为TimeoutError,如果存在超时错误,您可以回忆起您的任务。

代码语言:javascript
运行
复制
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   
                }

            }
        });
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49194011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档