2017-05-27 62 views
0

我使用Volley从服务器获取数据。有时候,当网络连接速度慢时,我得到的响应是两次或三次或更多。我遵循了类似问题的答案,在Android volley sending data twice 。但我仍坚持同样的problem.Below是我code.Please帮我Android凌空响应不止一次收到

代码:

public void volley_get_list() { 
    RequestQueue requestQueue = Volley.newRequestQueue(getActivity()); 
      StringRequest stringRequest = new StringRequest(Request.Method.POST, srch_lst_url, new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) 
       { 
        Log.e("Response", response); 
        if(!broadcast_unregister) { 
         getActivity().unregisterReceiver(broadcastReceiver); 
         Log.e("BroadcastReceiver", "Unregistered"); 

         broadcast_unregister=true; 
        } 
         } 
      }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
       error.printStackTrace(); 

       } 
      }) { 
       @Override 
       protected Map<String, String> getParams() { 
        HashMap<String,String> hashMap = new HashMap<>(); 
        hashMap.put("search", typed_text); 
        hashMap.put("latt", lat); 
        hashMap.put("long", longt); 

        return hashMap; 
       } 
      }; 
    RetryPolicy retryPolicy=new DefaultRetryPolicy(0,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); 
      stringRequest.setRetryPolicy(retryPolicy); 
      stringRequest.setShouldCache(false); 
      requestQueue.add(stringRequest); 
      requestQueue.start(); 
     }   

回答

0

我希望,如果你删除此代码,它应该工作(requestQueue.start();),因为加到requestqueue本身使api命中。

希望这是有益:)

0

您设置重试超时时间为0秒,这意味着它会后的第一个非常非常非常快开始试尝试,我不感到惊讶,如果他们当你这样做的时候会有错误。

https://android.googlesource.com/platform/frameworks/volley/+/idea133/src/com/android/volley/DefaultRetryPolicy.java#58

int timeout = TimeUnit.SECONDS.toMillis(3); 
int maxRetries = DefaultRetryPolicy.DEFAULT_MAX_RETRIES; 
int backoffMultiplier = DefaultRetryPolicy.DEFAULT_BACKOFF_MULT; 
RetryPolicy retryPolicy = new DefaultRetryPolicy(timeout, maxRetries, backoffMultiplier); 

尝试3秒代替(3000ms)