简介

AsyncTask是Android系统提供的异步方式,其优点在于在子线程执行任务,并将结果传递给主线程。

实现方式

AsyncTask封装了Executor和Handler。

基本使用

通过AsyncTask提供的4个方法,做业务处理

  • onPreExecute()
  • doInBackground(Params... params)
  • onProgressUpdate(Progress... values)
  • onPostExecute(Result result)

注:本文并不是主要写如何使用AsyncTask,因此不作展开介绍。

兼容性

本文主要介绍的是AsyncTask在不同的API版本中的区别。

并行还是串行

下面的表格说明了AsyncTask的在不同API版本中,并行、串行情况:

  • Android1.5 ------------execute--------串行
  • Android1.6~2.2 --------execute--------并行
  • Android3.0+ -----------execute--------串行

在Android3.0以后,如果要使用并行执行,那么需要调用executeOnExecutor方法。

线程池

在Android4.4以前,corePoolSize的值为5:

 private static final int CORE_POOL_SIZE = 5;

4.4以后改为当前CPU数量加1:

 private static final int CORE_POOL_SIZE = CPU_COUNT + 1;

线程池的调度

设: nT为当前线程池的线程数量。

  • nT >= corePoolSize  workQueue未满,新任务直接加入workQueue
  • workQueue已满  nT < maximumPoolSize 新任务等待
  • nT >= maximumPoolSize  workQueue已满,将会使用THREADPOOLEXECUTOR中的handler进行处理:

    public void rejectedExecution(Runnable r, ThreadPoolExecutor e) { throw new RejectedExecutionException("Task " + r.toString() + + " rejected from " + e.toString()); }

AsyncTask兼容性的更多相关文章

  1. 深入了解Android中的AsyncTask

    AsyncTask,即异步任务,是Android给我们提供的一个处理异步任务的类.通过此类,可以实现UI线程和后台线程进行通讯,后台线程执行异步任务,并把结果返回给UI线程.  我们知道,Androi ...

  2. 前端css兼容性与易混淆的点

    一.常用的骨灰级清除浮动 .clearfix:after { content: "."; display: block; height:; clear: both; visibil ...

  3. SQL Server2008R2 在windows8上安装,出现“兼容性”和 “执行未经授权的操作”的错误!

    本人是windows8.1的操作系统,亲测安装成功 解决方法如下: 1.卸载干净sql Server2008r2,包括注册表内容,删除c盘下的安装路径! 2.关闭防火墙(这步很重要) 3.断开网络连接 ...

  4. [转载]强制不使用“兼容性视图”的HTML代码

    在IE8浏览器以后版本,都有一个"兼容性视图",让不少新技术无法使用.那么如何禁止浏览器自动选择"兼容性视图",强制IE以最高级别的可用模式显示内容呢?下面就介 ...

  5. Android 旋转屏幕--处理Activity与AsyncTask的最佳解决方案

    一.概述 运行时变更就是设备在运行时发生变化(例如屏幕旋转.键盘可用性及语言).发生这些变化,Android会重启Activity,这时就需要保存activity的状态及与activity相关的任务, ...

  6. 企业IT管理员IE11升级指南【16】—— 使用Compat Inspector快速定位IE兼容性问题

    企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...

  7. 浅谈WebService的版本兼容性设计

    在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...

  8. Android笔记——AsyncTask介绍

    AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操 ...

  9. Android线程管理之AsyncTask异步任务

    前言: 前面几篇文章主要学习了线程以及线程池的创建与使用,今天来学习一下AsyncTask异步任务,学习下AsyncTask到底解决了什么问题?然而它有什么弊端?正所谓知己知彼百战百胜嘛! 线程管理相 ...

随机推荐

  1. 你不知道的 页面编码,浏览器选择编码,get,post各种乱码由来

    原文:你不知道的 页面编码,浏览器选择编码,get,post各种乱码由来 asp.net页面编码和浏览器的选择编码 每个asp.net的朋友都知道,在新版本的visual studio,在没有任何设置 ...

  2. IE通过推理IE陈述的版本号

    样例: 1. <!--[if !IE]> 除IE外都可识别 <![endif]--> 2. <!--[if IE]> 全部的IE可识别 <![endif]-- ...

  3. jQuery弹出窗口完整代码

    jQuery弹出窗口完整代码 效果体验:http://keleyi.com/keleyi/phtml/jqtexiao/1.htm 1 <!DOCTYPE html PUBLIC "- ...

  4. 推荐一个比较好的VBS编辑器

    QTP 本身的IDE环境, 有诸多缺陷.所以,一般中级以上的自动化测试工程师都会采用外部其他编辑器来编辑VBS脚本.通常情况下,一般都 notepad++. 但是,notepad++也是有很多不足之处 ...

  5. NodeJS热部署工具 — supervisor

    NodeJS热部署工具 — supervisor 大家都在开发nodejs应用时遇到过这样的情况,修改nodejs应用中的程序文件后必须重启nodejs才能重新加载应用代码.这是因为nodejs加载过 ...

  6. RabbmitMQ集群搭建流程

    参考资料 1.rabbmitMQ集群搭建http://my.oschina.net/guol/blog/186445http://blog.ftofficer.com/2010/03/translat ...

  7. mongo查询某个字段是否存在,并删除记录里的这个字段

    查询course表中,存在lectures_count字段的记录信息 db.course.find( { "lectures.lectures_count": { $exists: ...

  8. Log4j、Log4j 2、Logback、SFL4J、JUL、JCL的比较

    Log4j.Log4j 2.Logback.SFL4J.JUL.JCL的比较 之前就知道有好几种日志框架,但是一直都是听别人讲,在什么时候该用何种logger,哪种logger比较好……一直对Log4 ...

  9. Leetcode: Subsets & SubsetsII

    Subsets Description: Given a set of distinct integers, S, return all possible subsets. Note: Element ...

  10. 关于MyEclipse SVN显示资源历史记录乱码问题

    使用SVN查看历史记录进行文件对比的时候,有时会出现乱码问题,如下图: 解决办法:打开Window-->Preferences 如下: 原来默认的是GBK,改为UTF-8即可