繁体   English   中英

并行AsyncTask执行状态

[英]Parallel AsyncTask execution state

如何确保所有并行运行的asynctask已完成执行? 我正在使用执行程序并行运行多个asynctasks。 需要知道所有人都完成了他们的任务。

最简单的方法是在某种ListMap中跟踪每个AsyncTask 完成后,让他们将自己从跟踪器中删除(在onPostExecute() )。 当所有内容都删除后,它们全部完成。 请谨慎使用这些以及其他线程技术:它们不了解Android组件( ActivityService )的生命周期。

作为一个简单的解决方案,您可以使用如下的int类变量:

private int TOTAL_ASYNC_TASKS_IN_PROGRESS = 0;

然后递增这个中断在onPreExecute()方法和减少在此INT onPostExecute()方法。

当您的int值= 0时,意味着您的所有AsyncTasks已执行。

编辑
您应该使用自己的ThreadPool执行器实现,并使用ThreadPool执行器(而不是默认执行器)执行AsyncTasks。 因为通过使用默认提供的ThreadPool执行器,您可能会在执行太多多个AsyncTask时耗尽容量。

这是用于实现自定义ThreadPool执行程序的很好的教程:
http://www.javacodegeeks.com/2013/03/my-custom-thread-pool-executor-in-java.html

我希望这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM