2

例如,我有两个方法 method1() 和 method2(),现在它们每个都创建新的 AsyncTask 并开始在内部执行一些 http-query。每个任务都会返回对象列表(list1 和 list2),我需要等待所有对象并将这些列表合二为一才能返回。最好的方法是什么?

而且我真的不需要保持秩序,它可能是list2之后的list1。等待所有结果的最佳方法是什么以及我应该在哪里累积它们?如果我想保持秩序怎么办?

4

3 回答 3

0

如果没有看到你已经做了什么,很难提供太多帮助。但是我会创建一个成员ArrayList,或者使用第一个方法LinkedHashMap调用第一个成员AsyncTask并将这些结果放入列表中。onPostExecute()然后从您的第一个方法中调用第二个方法AynscTask并将这些结果添加到列表中。如果您需要更多帮助,请发布您已经开始的一些代码

于 2013-01-10T20:40:53.467 回答
0

根据AsyncTask的描述,您有两个有趣的方法:

  • doInBackground
  • onPostExecute

第一个用于在后台线程中工作并返回结果,第二个在 UI 线程中以result作为参数调用。您可以将下载/计算的数据添加到doInBackground每个 AsyncTask 的列表中,这应该可以工作。

如果您想知道两个 AsyncTasks 是否都已完成,那么您必须有两个标志,在 UI 线程中设置和签入:设置onPreExecute,签入onPostExecute

于 2013-01-10T20:55:40.947 回答
0

我建议您使用“线程”而不是 AsyncTask。例如:

new Thread(new Runnable(){

   list1 = getList1();

   new Thread(new Runnable(){

      list2 = getList2();
      //you have now list1 and list2, call your method here to do your stuff
   }).start();
}).start();
于 2013-01-10T20:56:37.997 回答