关于Android3.0版本之后的AsyncTask类
来源:互联网 发布:南华大学船山学院 知乎 编辑:程序博客网 时间:2024/05/16 03:35
一直以来都是以下面的方式执行AsyncTask任务:
new AsyncTask<Void, Void, Void>() {@Overrideprotected Void doInBackground(Void... params) {// 处理耗时操作return null;}}.execute();
但是,最近在使用过程中发现在4.0以上的手机上使用上面的方法执行AsyncTask任务,只会有一个线程在执行,经过多方测试才发现在2.X的系统上AsyncTask是多线程的,到了4.X上后就变成AsyncTask的线程池里只有一个线程在跑了。
而在看一些开源的项目代码的时候,发现别人在3.0以上的手机上执行AsyncTask都不会使用上面的方式执行了,所以,应该是3.0以上的AsyncTask默认是单线程执行了。
所以要适配不同版本的手机,应该使用下面的工具类执行AsyncTask任务:
public class CommonUtils { public static <Params, Progress, Result> void executeAsyncTask( AsyncTask<Params, Progress, Result> task, Params... params) { if (Build.VERSION.SDK_INT >= 11) { task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params); } else { task.execute(params); } }}
示例:
CommonUtils.executeAsyncTask(new AsyncTask<Void, Void, Void>() {@Overrideprotected Void doInBackground(Void... params) {// 处理耗时操作return null;}});
- 关于Android3.0版本之后的AsyncTask类
- 关于android3.0及以后版本访问webService的问题
- 关于Android3.0以后版本屏幕旋转与生命周期的变化
- 转的关于android3.0的文章
- 关于Android3.0以上网络访问的问题解决
- 关于android3.0以后引入fragment碎片的小问题
- 关于VS2010之后版本的远程调试
- android 学习九 Fragments 介绍(android3.0及4.0与之前版本区别的部分)
- android Fragments 介绍(android3.0及4.0与之前版本区别的部分)
- android 学习九 Fragments 介绍(android3.0及4.0与之前版本区别的部分)
- Options Menu在android2.3.x及以下版本与android3.0以上版本显示原理的区别
- AsyncTask版本的差异
- 关于Android3.0以后增加的StackView控件的小理解
- Android3.0中ActionBar的新特性
- Android3.0中ActionBar的新特性
- Android3.0中ActionBar的新特性
- Android3.0中ActionBar的新特性
- 关于AsyncTask的注意事项
- web网页中的特殊字体/字符
- phoneGap插件
- 原理分析之二:框架整体设计
- 【因为你我懂得微笑面对】
- 指针-->字符串
- 关于Android3.0版本之后的AsyncTask类
- 页面提交错误,页面间参数传递java.lang.NumberFormatException: null
- 面试3
- 实现智能指针有两种经典策略:一是引入辅助类,二是使用句柄类。
- C++ 函数指针及指向函数说明
- 提高VS2010运行速度的技巧
- POSIX标准总体分析
- jsp,xml自动提示
- ios,scrollview 或 tableview中实现上滚隐藏tabbar,下滚出现tabbar