2017-05-27 26 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)