繁体   English   中英

并行执行AsyncTask

[英]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.

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