[英]Parallel AsyncTask execution state
如何确保所有并行运行的asynctask已完成执行? 我正在使用执行程序并行运行多个asynctasks。 需要知道所有人都完成了他们的任务。
最简单的方法是在某种List
或Map
中跟踪每个AsyncTask
。 完成后,让他们将自己从跟踪器中删除(在onPostExecute()
)。 当所有内容都删除后,它们全部完成。 请谨慎使用这些以及其他线程技术:它们不了解Android组件( Activity
, Service
)的生命周期。
作为一个简单的解决方案,您可以使用如下的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.