2017-05-27 13 views
0

サーバーからデータを取得するためにVolleyを使用しています。ネットワーク接続が遅い場合は、2回または3回以上応答を得ます。Android volley sending data twiceまだ私は同じproblem.Belowで立ち往生しています.Butである私の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();)を動作するはずアドオン理由要求キュー自体には、APIがヒットします。

希望、これは便利です:)あなたは0秒に再試行タイムアウト期間を設定している

0

、これは最初の1の後に非常に非常に非常にすぐに再試行を始めましょう、そしてその場合、私は驚いていないよ意味あなたがこれを行うときにバグです。

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); 

(3000ms)の代わりに3秒を試してみてください
関連する問題