例如,我有两个方法method1()和method2(),现在每个方法都创建新的AsyncTask并开始在里面执行一些http-query。每个任务都返回对象的List(list1和list2),我需要等待所有这些并将这些列表放入一个返回。最好的方法是什么?
我并不需要保持秩序,它可能是list2之后的list1。等待所有结果的最佳方式是什么?我应该在哪些方面积累它们?如果我想保持秩序怎么办?
答案 0 :(得分:0)
如果没有看到你已经做过的事情,很难给予很多帮助。但我会创建一个成员ArrayList
或LinkedHashMap
并使用第一种方法调用第一个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();