2017-10-31 6 views
1

Ich hoffe, ich kann das Problem in der richtigen Weise erklären :) Ich habe ein Array von Objekt (handleData) .Ich bekomme sie von der DB. Ich möchte sie an den Server senden, indem ich den Dienst für jeden einzeln anrufe. Ich stelle den Dienst in eine for-Schleife, um alle handleData zu senden (siehe Code).Hintergrund Service rufen Sie innen für Schleife in Java auf?

Anrufdienst ist ein Hintergrund getan. die Antwort von jedem kann nicht kommen, wie sie geordnet gesendet haben. und ich muss für jedes handleData, das ich sende, ein Update durchführen.

Problem: Wenn die Antwort kommt, bin ich nicht sicher, ob, wenn die betrachtete Aktion (Aktualisierung des Datensatzes) zu den exakten handleData, die ich richtig gesendet/gesendet werden soll.

private void sendDataOfTemplates() { 
    ArrayList<FormHandleData> formHandleDatas = FormHandleData.getDatasFromDB(getContext(), 12, EnumDataStatusOfServer.NoSTATUS.getIntValue(),-1);// true means >> to send/-1 means no limit 
    try { 
     if (formHandleDatas != null && formHandleDatas.size() != 0) { 
      for (int i = 0; i < formHandleDatas.size(); i++) { 
       final FormHandleData handleData = formHandleDatas.get(i); 
       if (handleData.status_in_server == EnumDataStatusOfServer.OPEN.getIntValue()) 
        if (handleData.status_in_app == EnumDataStatusInApp.SAVED.getIntValue() || handleData.status_in_app == EnumDataStatusInApp.EDITED.getIntValue()) { 
         ServiceHelper.getInstance().sendDataOfTemplates(new ServiceHelper.ResponseListener() { 
          @Override 
          public void onResponse(String response) { 
           try { 

            SimpleResponse simple_response = new Gson().fromJson(response, SimpleResponse.class); 
            if (simple_response.isSuccessful()) { 
             handleData.status_in_app = EnumDataStatusInApp.SENT.getIntValue(); 
             FormHandleData.UpdateDataTemplatesInDB(handleData, getContext(),false); 
            } else { 
            } 
           } catch (Exception e) { 
           } 
          } 

          @Override 
          public void onErrorResponse(VolleyError error) { 
          } 
         }, handleData); 
        } 
      } 
     } 
    } catch (Exception e) { 
    } 

} 

Antwort

1

Sie können sie nacheinander senden, wenn jeder wie rekursive Methoden abgeschlossen ist. hoffe, dass diese Arbeit für Sie ..

+0

thx für réponse, aber wenn ein Element nicht gesendet wird oder irgendein Fehler auftritt, wird anderes Element nicht senden. – tahaDev

Verwandte Themen