2016-05-17 61 views
2

我在我的一个应用程序中使用了翻新API。 下面是代码: -如何应用同步任务进行改造android

for(int i=0; i< mFileArrayList.size();i++){ 


    WebServiceManager.getInstance().getFrogService().postNotes("HI", "Hello", "Done", new Callback<NotesResponse>() { 

      @Override 
      public void success(NotesResponse response, retrofit.client.Response response2) { 
       System.out.println(response); 
       Toast.makeText(AllKPIActivity.this, "Success", Toast.LENGTH_SHORT).show(); 
      } 

      @Override 
      public void failure(RetrofitError error) { 
       System.out.println(error); 
       Toast.makeText(AllKPIActivity.this, "Fail", Toast.LENGTH_SHORT).show(); 
      } 
     }); 


    } 

正在发生的事情是成功的某个时候到来之前,循环继续运行并失败来。 我想要的是当第一次成功时,只有循环前进。 请帮助,我该如何做到这一点?

回答

4

如果我是你,我会重新组织代码手动做循环。这样

int i = 0; 

private void fowardLoop(){ 
    if(i => mFileArrayList.size()){ 
     return; //loop is finished; 
    } 

    i++; 
    WebServiceManager.getInstance().getFrogService().postNotes("HI", "Hello", "Done", new Callback<NotesResponse>() { 

     @Override 
     public void success(NotesResponse response, retrofit.client.Response response2) { 
      System.out.println(response); 
      Toast.makeText(AllKPIActivity.this, "Success", Toast.LENGTH_SHORT).show(); 
      forwardLoop(); // loop continues only if you get the success callback from previous request. 
     } 

     @Override 
     public void failure(RetrofitError error) { 
      System.out.println(error); 
      Toast.makeText(AllKPIActivity.this, "Fail", Toast.LENGTH_SHORT).show(); 
      // the loop breaks when there is failure callabck. 
     } 
    }); 
} 

的东西,你想

的改造仍然是异步的,但只要你想在应用程序的行为只是使用forwardLoop()方法来启动循环。 希望它会有帮助我没有测试这个解决方案。

+0

感谢Karol ..它的作用是+1 –