将AsyncTasks的结果放在一起

时间:2013-01-10 20:37:04

标签: java android http android-asynctask

例如,我有两个方法method1()和method2(),现在每个方法都创建新的AsyncTask并开始在里面执行一些http-query。每个任务都返回对象的List(list1和list2),我需要等待所有这些并将这些列表放入一个返回。最好的方法是什么?

我并不需要保持秩序,它可能是list2之后的list1。等待所有结果的最佳方式是什么?我应该在哪些方面积累它们?如果我想保持秩序怎么办?

3 个答案:

答案 0 :(得分:0)

如果没有看到你已经做过的事情,很难给予很多帮助。但我会创建一个成员ArrayListLinkedHashMap并使用第一种方法调用第一个AsyncTask并将这些结果放入列表中。然后从第一个onPostExecute()的{​​{1}}中调用第二个方法,并将这些结果添加到列表中。如果您需要更多帮助,请发布您已经开始的一些代码

答案 1 :(得分:0)

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

  • doInBackground
  • onPostExecute

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

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

中签入

答案 2 :(得分:0)

我建议您使用“Thread”而不是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();