0

我有一个 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
            }
        }
     }

提前致谢

4

3 回答 3

1

您可以从您的主要doInBackground方法中调用其他方法。AsyncTasksdoInBackground

public class MainAsyncTask<?, ?, ?>{
    doInBackground(){
        new OtherAsyncTask().doInBackground();
        new AnotherAsyncTask().doInBackground();
    }
}

或者,更好的是,将您的代码拆分一下,这样他们AsyncTasks就不会负责了。

于 2013-04-24T10:13:33.717 回答
0

您应该使用回调运行实现接口(观察者设计模式)的任务,并且在每个任务完成后,您将能够在调用线程中做任何您想做的事情。但我不会从 doInBackground() 内部启动 asyncTasks,您应该从主 (UI) 线程执行此操作。

于 2013-04-24T10:12:31.697 回答
0

您可以在 AsyncTask1 的 OnPostExecute() 中执行您的 AsynTask2 或 AsyncTask3 。但是观察者设计模式是这样做的好方法。

于 2013-04-24T11:51:30.023 回答