我有一个AsyncTask执行多个AsyncTasks(调用Web服务)。
我正在寻找一种方法让我的AsyncTask等待其他AsyncTask响应
能够提供“主要”AsyncTask响应
public class MainTask extends AsyncTask<String, Void, String> {
protected String doInBackground(String... urls) {
for (int i=0 ; i<myObjects.size();i++) {
MyObject m=myObjects.get(i);
creationTask=new CreationTask();
//init creationTask
creationTask.execute(new String[] { URL });
}
//wait for creationTasks responses
//return "success" if all succeeded
}
}
MainTask启动的任务
public class CreationTask extends AsyncTask<String, Void, String> {
protected String doInBackground(String... urls) {
//Creation request to web Service
return result;
}
@Override
protected void onPostExecute(String result) {
if ("success".equals(result)) {
//notify MainTask
}
}
}
提前致谢
答案 0 :(得分:1)
您可以从主要doInBackground
中调用其他AsyncTasks
的{{1}}方法。
doInBackground
或者,更好的是,将代码分开一点,以便public class MainAsyncTask<?, ?, ?>{
doInBackground(){
new OtherAsyncTask().doInBackground();
new AnotherAsyncTask().doInBackground();
}
}
不负责。
答案 1 :(得分:0)
您应该使用回调来运行实现接口(观察者设计模式)的任务,并且在完成每个任务之后,您将能够在调用线程中执行任何操作。但我不会从doInBackground()内部启动asyncTasks,你应该从主(UI)线程中执行此操作。
答案 2 :(得分:0)
您可以在AsyncTask1的OnPostExecute()中使用AsynTask2或AsyncTask3。但Observer设计模式是这样做的好方法。