在android开发过程中AsyncTask会经常跟它打交道,网上也有不少对于它的说明,所以在这里就不说它的使用方法了,直接写自己对它的一些学习心得以及浅显的理解,错误之处忘批评指正。
AsyncTask是一个抽象类,提供了一个抽象方法doInBackground来供子类实现,以便让使用者自己来实现一些比较耗时的工作。
在AsyncTask的生命周期中任务分为三个状态,由变量mStatus来控制,mStatus为枚举类型,枚举类的名称为Status:

PENDING状态:标志这个任务还没有被执行过,该状态在定义状态变量mStatus的时候就被初始化了。private volatile Status mStatus = Status.PENDING;

RUNNING状态:标志这个任务已经被执行 ,当你调用execute执行任务的execute的时候会设置mStatus = RUNNING;
FINISHED状态:在执行finish(Result result)方法的时候会设置mStatus = FINISHED;至于finish()方法的执行时机是任务执行完以后有handler发送一条相关信息,然后在handleMessage里面调用。事实上onPostExecute就是在finish里面被调用的。

这三个状态的作用是防止一个AsyncTask的对象多次调用execute方法(事实上AsyncTask的一个对象只能被执行一次就是通过Status枚举来控制的),比如当前的AsynTask对象的mStatus为RUNNING或者FINISHED的时候你再调用execute方法的时候就会抛出异常了。看看execute的代码就可以知道:

  /**

Android AsyncTask源代码浅析相关推荐

  1. Android AsyncTask两种线程池分析和总结

    转自:http://bbs.51cto.com/thread-1114378-1-1.html Android AsyncTask两种线程池分析和总结 (一)    前言 在android Async ...

  2. Android L 漫游浅析

    这篇文章主要是分析在Android L 源代码中对手机漫游的处理.当然我这里所说的漫游指的是国际漫游.通常我们判断手机是否在国际漫游,第一个想法就是比较网络上获取的MCC+MNC是否与手机中的IMSI ...

  3. android settings源代码分析(2)

    通过前一篇文章  Android settings源代码分析(1)  分析,大概知道了Settings主页面是如何显示,今天主要分析"应用"这一块google是如何实现的. 应用对 ...

  4. Android系统源代码下载

    引用:http://www.cnblogs.com/mandroid/archive/2011/06/06/2073473.html 一.概述 众所周知,Android移动操作系统是Google花费了 ...

  5. android AsyncTask介绍(转)

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

  6. Android `AsyncTask`简要分析

    Android `AsyncTask`简要分析 AsyncTask简要分析 经典异步任务:AsyncTask,使用场景有:批量下载,批量拷贝等.官方文档就直接给出了一个批量下载的示例. private ...

  7. Android菜鸟的成长笔记(5)——Android系统源代码你下载了吗?

    在上一篇中我们用Android系统源代码分析了我们前面写的代码,有的朋友可能就会问怎么才能下载到Google官方的源代码呢?下面我们通过Git管理工具来对Android系统源代码进行下载.另外为了方便 ...

  8. Android 消息处理源代码分析(1)

    Android 消息处理源代码分析(1) 在Android中,通常被使用的消息队列的代码在文件夹\sources\android-22\android\os下,涉及到下面几个类文件 Handler.j ...

  9. android源代码下载AE 文字样式,阅读Android framework源代码方式

    阅读Android framework源代码方式 点击标题下「蓝色微信名」可快速关注 阅读源代码的方式有很多,这里只讲其中的两种方式. 一.AndroidXRef(强烈推荐) 这种方式速度快,操作简单 ...

  10. android源码中的ndk,如何在不需要Android操作系统源代码的情况下在Android NDK中创建新的NativeWindow?...

    我想编译一个Android OpenGL控制台应用程序,您可以直接从控制台启动Android x86或从Android x86 GUI中的Android终端应用程序运行.如何在不需要Android操作 ...

最新文章

  1. R语言-包的安装、载入及使用方法
  2. JavaScript引用类型之Array数组之强大的splice()方法
  3. 科幻片天际SKYLINE,喜欢科幻的朋友不要错过。
  4. 有线网卡和无线网卡同时上网 优先级切换的设置方法
  5. 多帧点云数据拼接合并_多工作簿数据合并,还在手动复制粘贴就out了,用批处理一键搞定...
  6. 学习响应式BootStrap来写融职教育网站,Bootsrtap第七天PC端轮播图
  7. 使用 csv 导入的方式在 SAP S/4HANA 里创建 employee 数据
  8. 神奇的python(一)之python脚本调用shell常用方法
  9. python编辑器_自学python第一课之下载安装编辑器
  10. 学计算机不会重装系统正常吗,系统重装不了的原因是什么 重装不了系统的解决方法【图文】...
  11. SQLServer之删除用户自定义数据库用户
  12. mysql 5.6 解压缩版安装教程
  13. 产品设计:《设计美学》
  14. opencv图片保存0字节_Opencv中IplImage存储方式介绍
  15. php自动生成word目录,word目录自动生成,word如何自动生成目录
  16. 按键精灵html代码,按键精灵代码post和get
  17. Java Web框架学习
  18. 软考(3)-知识产权与标准化
  19. 深度学习和神经网络的区别是什么
  20. a16z:推翻互联网的偶然君主制,如何设计Web3平台治理?

热门文章

  1. 相位编码信号 matlab,matlab 求基于相位编码的雷达回波仿真 更多交易加我QQ
  2. html取json列表长度,js获取json元素数量的方法
  3. 机器学习_回归和分类的区别
  4. 深度学习实现缺陷检测算法汇总
  5. Kotlin 丢失了一些 JRE 类
  6. 字符串格式连接sqlserver数据库的字段概念解释
  7. (6)ASP.NET Core 中使用IHttpClientFactory发出HTTP请求
  8. iOS 全局变量(转)
  9. Codeforces 482B Interesting Array(线段树)
  10. hdu 1217 Arbitrage (最小生成树)