[英]Parallel Executing of an AsyncTask
在异步执行异步任务时,我发现了两种方法:
第一个使用THREAD_POOL_EXECUTOR
:
myTask.executeOnExecutor ( AsyncTask.THREAD_POOL_EXECUTOR );
第二个使用AsyncTaskCompat.executeParallel
:
AsyncTask asyncTaskTest = new myTask();
AsyncTaskCompat.executeParallel ( asyncTaskTest , null );
它们之间有什么区别吗?
如果设备在Honeycomp或更高版本上运行,则没有区别。
在Api 11以下,任务将从api 1到(专有)DONUT依次执行,并从DONUT到Honeycomp并行运行。
所以:
API 1-3:在单个后台线程上串行
API 4-11:与线程池并行
API 12- x:使用executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
根据您的最低API级别,您可以直接从AsyncTask
使用executeOnExecutor()
。
AsyncTaskCompat.executeParallel(asyncTaskTest,null); 已在此Link中弃用。
使用ThreadPoolExecutor可以实现并行执行,因为您可以传递ThreadFactory,这有助于创建对象链接
由于后者比第一个具有更强大的功能。 最好与后者一起使用,并且Developer块也建议这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.