在我的android应用程序中,我有3个网络呼叫,它们依赖于之前的调用。因此,1必须完成,然后2可以去,最后3得到运行的数据,从前一个。因此,我需要网络调用按顺序运行是目标。在一个调用完成后,它会将数据传递到下一个调用,等等。我不想使用rxJava。有没有一种改造的方法来实现这一点?我的项目已经在使用改造,所以我想继续使用它?我试过玩asynchTask,但它不干净,自从我使用改造,我想我会问。
发布于 2015-07-17 18:18:35
如果您使用的是异步s,那么对于第一个网络调用,您可以传入生成的接口,该接口表示正在与之交互的web服务。然后,在success方法中,您可以使用生成的接口实例进行第二个网络调用,使用参数化类型T返回到success中的数据,以此类推,用于第二个回调中的第三个调用。例如:
class FirstCallback implements Callback<First> {
private Api api;
public FirstCallback(Api api) {
this.api = api;
}
void success(First data, Response response) {
api.secondCall(data, new SecondCallback(api))
}
}
// somewhere else in your code
api.firstCall(new FirstCallback(api));这是一个使用异步调用链接的快速解决方案。使用同步调用(它将直接返回AsyncTask类型),这很可能看起来更有顺序,并且更容易在T中读取。例如:
class MyTask extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void... params) {
First first = api.firstCall();
Second second = api.secondCall(first);
// ...and so on until you return the final result
}
}https://stackoverflow.com/questions/31481738
复制相似问题