AsyncTask<Params, Progress, Result>中三个参数为:
Params         输入数据
Progress       过程数据
Result           结果数据
 
工作队列 LinkedlockingQueue 的特性
     线程从空的LinkedlockingQueue中取任务执行,线程会被阻塞;
     线程向一个满的LinkedlockingQueue中添加任务,同样会被阻塞。
 
onProgressUpdate 和 onPostExecute执行与界面相关的操作。
 
InternalHandler:
case MESSAGE_POST_RESULT:
     result.mTask.finish(result.mData[0]);
 
case MESSAGE_POST_PROGRESS:
     result.mTask.onProgressUpdate(result.mData);
 
case MESSAGE_POST_CANCEL:
     result.mTask.onCancelled();
 
 
异步任务的创建过程:
 
 
执行过程:
调用execute方法
在执行过程中,会调用内部一个Callable对象的成员函数call来执行一个具体工作任务
具体任务的执行在doInBackground中
如果异步任务需要执行与界面相关的操作,需要调用publishProgress,该方法会想想sHandler发送一个 MESSAGE_POST_PROGRESS消息,交给 onProgressUpdate来处理。
FutureTask成员函数done被调用
done首先调用AsynTask.get方法获取当前工作任务的结果数据,并将其封装为 MESSAGE_POST_RESULT消息
AsynTask.finish方法处理 MESSAGE_POST_RESULT消息。
 

Android源码——AsynTask的更多相关文章

  1. Android源码——Broadcast Receiver

    Android源码分析——广播 广播是一种在组件之间进行消息传递的方式.广播机制的实现是基于Binder进程间通信. Binder进程间通信和广播的差别:Binder中,Client组件和Servic ...

  2. Android源码阅读 – Zygote

    @Dlive 本文档: 使用的Android源码版本为:Android-4.4.3_r1 kitkat (源码下载: http://source.android.com/source/index.ht ...

  3. Eclipse与Android源码中ProGuard工具的使用

    由于工作需要,这两天和同事在研究android下面的ProGuard工具的使用,通过查看android官网对该工具的介绍以及网络上其它相关资料,再加上自己的亲手实践,算是有了一个基本了解.下面将自己的 ...

  4. Android 源码下载方法(Git 方式clone)

    Android源码对于Android开发者来说,迟早有一天你会用到的,所以就记录一下,分享给读者,希望对读者有用 这里需要使用到Git相关知识,不清楚的可以先阅读,了解的可以跳过 Git-Tortoi ...

  5. Android源码编译make的错误处理

    android源码下载:官方下载 或参考android源码下载方式 Android编译版本: PLATFORM_VERSION=4.0.1(最新Android 4.0.1) OS 操作系统平台: Li ...

  6. Atitit.反编译apk android源码以及防止反编译apk

    Atitit.反编译apk android源码以及防止反编译apk 1.1. Tool  apk逆向助手1 1.2. 二.使用dex2jar + jd-gui 得到apk的java源码1 1.3. 用 ...

  7. 加速android源码编译

    添加缓存环境变量 : 在 ~/.bashrc 环境变量文件中 添加 export USE_CCACHE=1环境变量, 加速随后的编译过程; 分配缓存磁盘大小 为 ccache 指定磁盘中的一部分大小, ...

  8. 编译Android源码

    编译版本要求 基本安装环境 ubuntu 14.04 64 sudo apt-get install git-core gnupg flex bison gperf build-essential \ ...

  9. Android源码编译出错解决办法

    编译环境:Ubuntu12.04 64位 Android源码:Android 4.3 以下问题是笔者亲自碰到,通过网上查询整合在一起的. 1.error while loading shared li ...

随机推荐

  1. 用java单例模式实现面板切换

    1.首先介绍一下什么是单例模式: java单例模式是一种常见的设计模式,那么我们先看看懒汉模式: public class Singleton_ { //设为私有方法,防止被外部类引用或实例 priv ...

  2. ArcGIS Engine开发之地图基本操作(3)

    地图数据的加载 一.加载Shapefile数据 Shapefile文件是目前主流的一种空间数据的文件存储方式,也是不同GIS软件进行数据格式转换常用的中间格式.加载Shapefile数据的方式有两种: ...

  3. 酷欧天气(CoolWeather)应用源码

    <ignore_js_op> 181420yank2y45klayhaan.jpg (35 KB, 下载次数: 0) 下载附件  保存到相册 2016-3-29 15:09 上传   酷欧 ...

  4. PHP语法(二):数据类型、运算符和函数

    相关链接: PHP语法(一):基础和变量 PHP语法(二):数据类型.运算符和函数 PHP语法(三):控制结构(For循环/If/Switch/While) 这次整理了PHP的数据类型.运算符和函数. ...

  5. 迭代字典中的key和value

    字典是python中十分重要的一个内容. 今天我们来谈谈,在一个 for 循环中,能否同时迭代 key和value?当然可以咯. dict 对象的 items() 方法返回的值: >>&g ...

  6. 每天5分钟 玩转OpenStack 目录列表

    最近在学习 OpenStack 的相关知识,一直苦于 OpenStack 的体系庞大以及复杂程度,学习没有进度,停滞不前.偶然机会在 51CTO 上发现了一个热点的专题关于 OpenStack 的,题 ...

  7. 重邮二进制日天群-pwn1

    给学弟们练手的题目,做的过程中接触一些基本概念 #include <stdio.h> #include <unistd.h> int main() { ]; welcome() ...

  8. 无法安装Windows Live“OnCatalogResult:0x80190194”错误的解决方法

    今天想安装一个博客客户端,结果安装一直报错"OnCatalogResult:0x80190194",百度查到了解决发放再此记录下来,以备后用. 到官网下载了一个在线安装程序,可是一 ...

  9. WPF 自定义窗口

    在WPF中,经常需要对窗口进行设置,下面讲讲常用的几个设置. 1.无边框窗口 WindowStyle="None" 窗口样式无 AllowsTransparency="T ...

  10. Web.xml配置详解

    (转自:http://www.cnblogs.com/chinafine/archive/2010/09/02/1815980.html) 1 定义头和根元素 部署描述符文件就像所有XML文件一样,必 ...