AsyncTask在SDK 3.0前后的区别
2015-08-17 18:11
288 查看
AsyncTask 是在SDK 1.5 版开始使用,最处运行时是按顺序运行,也就是说在运行多个任务时,AsyncTask 会一个一个的执行这些任务,上一个任务执行完毕才会执行下一个,这样大大的影响了执行效率。
在SDK1.6之后2.3之前AsyncTask的执行顺序修改为并行执行了。如果同时执行多个任务,则这些任务会并行执行,这时的AsyncTask内部的线程池最大数量是5个,也就是说一次最多同时执行5个线程,超出这个范围的只能等待前面的某一个线程执行完再执行。如果某一应用需要大量的线程去执行任务,由于AsyncTask的这一局限性,我们只能放弃使用AsyncTask而自定义线程池.
在SDK3.
4000
0开始 google对AsyncTask API进行了又一次调整,调整如下:
1.又调回了最初了单任务执行,按照先后顺序每次只执行一个,前一个执行完之后才执行第二个。
2.新增了executeOnExecutor()接口:
这个接口允许开发者提供自定义的线程池来运行,如果需要更多的任务都能同时运行,我们可以创建
一个newCachedThreadPool ()线程池给AsyncTask。这样就改变了AsyncTask的默认状态,是AsyncTask 具有了newCachedThreadPool()的特性。
3.新增了两个定制线程池SERIAL_EXECUTOR和THREAD_POOL_EXECUTOR
SERIAL_EXECUTOR
的作用是保证任务执行的顺序,保证提交的任务确实是按照先后顺序执行的。
SERIAL_EXECUTOR 内部有一个队列用来保存所提交的任务,保证当前只运行一个,这样就可以保
证任务是完全按照顺序执行的。
用法:execute()
的默认值就是SERIAL_EXECUTOR 或者
executeOnExecutor(AsyncTask.SERIAL_EXECUTOR)
THREAD_POOL_EXECUTOR是一个corePoolSize为5的线程池,也就是说最多只能有5个线程同时运
行,超过5个的就要等待
用法:executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)
在SDK1.6之后2.3之前AsyncTask的执行顺序修改为并行执行了。如果同时执行多个任务,则这些任务会并行执行,这时的AsyncTask内部的线程池最大数量是5个,也就是说一次最多同时执行5个线程,超出这个范围的只能等待前面的某一个线程执行完再执行。如果某一应用需要大量的线程去执行任务,由于AsyncTask的这一局限性,我们只能放弃使用AsyncTask而自定义线程池.
在SDK3.
4000
0开始 google对AsyncTask API进行了又一次调整,调整如下:
1.又调回了最初了单任务执行,按照先后顺序每次只执行一个,前一个执行完之后才执行第二个。
2.新增了executeOnExecutor()接口:
这个接口允许开发者提供自定义的线程池来运行,如果需要更多的任务都能同时运行,我们可以创建
一个newCachedThreadPool ()线程池给AsyncTask。这样就改变了AsyncTask的默认状态,是AsyncTask 具有了newCachedThreadPool()的特性。
3.新增了两个定制线程池SERIAL_EXECUTOR和THREAD_POOL_EXECUTOR
SERIAL_EXECUTOR
的作用是保证任务执行的顺序,保证提交的任务确实是按照先后顺序执行的。
SERIAL_EXECUTOR 内部有一个队列用来保存所提交的任务,保证当前只运行一个,这样就可以保
证任务是完全按照顺序执行的。
用法:execute()
的默认值就是SERIAL_EXECUTOR 或者
executeOnExecutor(AsyncTask.SERIAL_EXECUTOR)
THREAD_POOL_EXECUTOR是一个corePoolSize为5的线程池,也就是说最多只能有5个线程同时运
行,超过5个的就要等待
用法:executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)
相关文章推荐
- 路由器版本与密码恢复
- AVG 7.5.1.43 版本 序列号 集合
- Nero v3.0.0.0 for LINUX 版本 下载
- PowerShell中查看当前版本、Windows版本、.NET版本信息的代码
- XHTML标准的版本
- 解决jquery版本冲突的有效方法
- php获取mysql版本的几种方法小结
- PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
- JavaScript版本迷局介绍
- JS判断浏览器类型与版本的实现代码
- javascript 检测浏览器类型和版本的代码
- js判断浏览器类型,版本的代码(附多个实例代码)
- Android中AsyncTask的用法实例分享
- 当mysqlbinlog版本与mysql不一致时可能导致出哪些问题
- Android的异步任务AsyncTask详解
- PHP版本如何选择?应该使用哪个版本?
- asynctask的用法详解
- Android中AsyncTask详细介绍
- Android开发笔记之:AsyncTask的应用详解
- android教程之使用asynctask在后台运行耗时任务