例如,我有两个方法method1()和method2(),现在每个方法都创建新的AsyncTask并开始在内部执行一些http查询。每个任务返回对象列表(list1和list2),我需要等待所有对象,并将这些列表放入一个列表中返回。最好的方法是什么?
我真的不需要保持顺序,可以是list1在list2之后。等待所有结果的最好方法是什么,我应该在哪里积累它们?如果我想维持秩序呢?
如果没有看到你已经做了什么,很难给予太多帮助。但我会创建一个成员ArrayList
或LinkedHashMap
,并使用第一个方法调用第一个AsyncTask
,并将这些结果放入列表中。然后从第一个AynscTask
的onPostExecute()
调用第二个方法,并将这些结果添加到列表中。如果你需要更多的帮助,请张贴一些你已经开始的代码
根据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();