2015-12-18 2 views
0

Я недавно начал работу на платформе разработки Android. Я использую Android Studio и использую библиотеку Volley для работы в сети. Я реализовал бэкэнд для push-уведомления для iOS, и он работает очень хорошо, и теперь я запускаю этот php через работу сети Volley следующим образом.Volley Request URL URL несколько раз

По некоторым причинам он вызывает этот URL несколько раз (5 или 6 раз), откуда я знаю? потому что устройство iOS получает несколько уведомлений. Я не знаю, почему это происходит и как я могу это решить?

public void onClick(View v) { 
     if(v == buttonBuy) { 
      message = (EditText) findViewById(R.id.offerText); 
      buy(); 
     } 
} 

private void buy() 
{ 
    StringRequest postRequest = new StringRequest(Request.Method.POST, Config.ASK_URL, 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 
         try { 
         } catch (Exception e) { 
          e.printStackTrace(); 
         } 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         error.printStackTrace(); 
        } 
       } 
     ) { 
      @Override 
      protected Map<String, String> getParams() 
      { 
       Map<String, String> params = new HashMap<>(); 
       params.put("token",token); 
       params.put("pname",objee.optString("pname")); 
       params.put("toid",objee.optString("uid")); 
       params.put("pid",pid); 
       params.put("message",message.getText().toString().trim()); 
       return params; 
      } 
     }; 

     CustomVolleyRequest.getInstance(this).getRequestQueue().add(postRequest); 
} 
+1

данного кода не будет вызывать больше, чем 1 раз. Возможно, вы вызываете метод 'buy()' или по вашей логике метод 'buy()' называется 5-6 раз – Pankaj

+0

Конечно, я нажимаю 'buyButton' только один раз. Я добавил остальную часть кода, где я называю метод 'buy()'. – hotspring

+0

Добавьте несколько операторов журнала в метод покупки и код, вызывающий его, чтобы узнать, что происходит. – Henry

ответ

0

Попробуйте добавить следующий код:

int socketTimeout = 10000; //10 seconds - change to what you want 
RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); 
postRequest.setRetryPolicy(policy);