Dee*_*rma 4 android synchronization retrofit
我在我的一个应用程序中使用了改造API.以下是代码: -
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();
}
});
}
Run Code Online (Sandbox Code Playgroud)
发生的事情是在成功到来之前的某个时候,循环继续,失败来临.我想要的是当第一次成功来临时,那么只有循环才会前进.请帮忙,我该怎么做到这一点?
如果我是你,我会重新组织代码来手动循环.像这样的东西
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.
}
});
}
Run Code Online (Sandbox Code Playgroud)
只需使用forwardLoop()方法启动所需的循环
改造仍然是异步的,但应用程序的行为符合您的要求.希望它会有所帮助我没有测试这个解决方案.
归档时间: |
|
查看次数: |
4578 次 |
最近记录: |