在我的Android应用程序中,我有3个网络呼叫,并且它们依赖于之前的呼叫。所以1必须完成,然后2可以去,最后3运行与前面的数据。所以我需要网络调用顺序运行才是目标。一个调用完成后,它会将数据传递给下一个调用,等等。我不想使用rxJava。有没有办法改造才能实现这一目标?我的项目已经在使用改造,因此我想继续使用它?我试过玩asynchTask,但它不干净,因为我使用改造,我想我会问。
答案 0 :(得分:-1)
如果您正在使用异步Callback
s进行Retrofit,那么对于第一次网络呼叫,您可以传入生成的界面,该界面代表您正在与之交互的Web服务。在success
方法中,您可以使用生成的接口的实例进行第二次网络调用,使用参数化类型success
下的T
中返回的数据,依此类推第二次回调中的第三次调用。例如:
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
}
}