把AsyncTasks的结果放在一起



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

我真的不需要保持顺序,可以是list1在list2之后。等待所有结果的最好方法是什么,我应该在哪里积累它们?如果我想维持秩序呢?

如果没有看到你已经做了什么,很难给予太多帮助。但我会创建一个成员ArrayListLinkedHashMap,并使用第一个方法调用第一个AsyncTask,并将这些结果放入列表中。然后从第一个AynscTaskonPostExecute()调用第二个方法,并将这些结果添加到列表中。如果你需要更多的帮助,请张贴一些你已经开始的代码

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

  • doInBackground
  • onPostExecute

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

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

我建议你使用"Thread"s而不是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();

相关内容

  • 没有找到相关文章

最新更新