我希望像这样一起执行两个AsyncTask:
exceldata = ParseDocument.Parse(filestream);
foo fooexample = new foo();
foreach (var object in exceldata)
{
fooexample.id = object.id;
fooexample.bar.id = object.bar.id;
// <-- how do I do this? if I need to initialize it, how?
}
我如何等待它们都完成才能执行其他指令?
(我正在寻找一种类似于 onPostExecute 的方法,但要用于多个AsyncTasks)
答案 0 :(得分:0)
如果您不希望进入RxJava
和Executors/Futures
之类的新域,则可以创建新的AsyncTask
并以阻塞方式在其中调用那两个。
doInBackground() {
Result resultProjects = new FetchProjetsTask().execute(projets.getId()).get();
Result resultDashboards= new FetchDashBoardsTask().execute(dashBoards.getId()).get();
// continue with necessary logic
}
请注意,get()
can throw exceptions。但是,如果不需要使用两个任务的结果来完成,都可以使用闩锁来实现解决方案,例如此处Wait for multiple AsyncTask to complete
答案 1 :(得分:0)
我的想法是利用
为AsyncTasks提供自己的executor的可能性new FetchProjetsTask().executeOnExecutor(yourExecutor, projets.getId());
new FetchDashBoardsTask().executeOnExecutor(yourExecutor, dashBoards.getId());
,然后使用执行程序的awaitTermination
来等待两项任务完成。