大佬教程收集整理的这篇文章主要介绍了Android排名DefaultRetryPolicy无法按预期工作,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
private Boolean syncCall(JSONObject jsonObject,final VolleyCallBACk callBACk) { final ProgressDialog progDailog = new ProgressDialog(context); final Boolean[] success = {falsE}; progDailog.setmessage("..."); progDailog.seTindeterminate(false); progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER); progDailog.setCancelable(false); progDailog.show(); final SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(context); requestQueue queue = Volley.newrequestQueue(context,new HurlStack()); final String token = prefs.getString("token",null); String URL = Constants.getUrlSync(); String param1 = String.valueOf(prefs.geTint("pmp",1)); String param2 = String.valueOf(prefs.geTint("ei",1)); URL = URl.replace("[x]",param1); URL = URl.replace("[y]",param2); //pegar id pmp e IE corretas JsonObjectrequest jsObjrequest = new JsonObjectrequest(request .Method.PUT,URL,jsonObject,new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject responsE) { callBACk.onsuccess(response + ""); success[0] = true; progDailog.dismiss(); } },new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { callBACk.onFailure(error); tokenFailure(error); success[0] = false; progDailog.dismiss(); } }) { @Override public Map<String,String> getHeaders() throws AuthFailureError { HashMap<String,String> headers = new HashMap<>(); headers.put("Token",token); return headers; } }; int socketTimeout = 30000; RetryPolicy policy = new DefaultRetryPolicy(socketTimeout,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); jsObjrequest.setRetryPolicy(policy); queue.add(jsObjrequest); return success[0]; }
我的问题是我发送了一个非常大的JSON,所以5秒的默认超时是不够的.因此,我尝试将超时增加到30秒,并且使用DefaultRetryPolicy来增加重试次数.
问题是,它在5s内保持计时,甚至不会重试一次!
我是否必须有一个监听器或回调重试?我在使用DefaultRetryPolicy做错了什么?请帮忙,这个问题让我疯狂……
因为你可以定义自己的.
而不是这个:
RetryPolicy policy = new DefaultRetryPolicy(socketTimeout,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
试试这个:
jsObjrequest.setRetryPolicy(new RetryPolicy() { @Override public int getCurrentTimeout() { // Here goes the new timeout return mySeconds; } @Override public int getCurrentRetryCount() { // The max number of attempts return myAttempts; } @Override public void retry(VolleyError error) throws VolleyError { // Here you @L_801_8@ check if the retry count has gotten // To the max number,and if so,send a VolleyError msg // or something } });
以上是大佬教程为你收集整理的Android排名DefaultRetryPolicy无法按预期工作全部内容,希望文章能够帮你解决Android排名DefaultRetryPolicy无法按预期工作所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。