您当前的位置: 首页 >  android

郭梧悠

暂无认证

  • 4浏览

    0关注

    402博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Android AsyncTask源代码浅析

郭梧悠 发布时间:2014-10-23 21:54:47 ,浏览量:4

在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的代码就可以知道:  

  /**
 
关注
打赏
1663674776
查看更多评论
立即登录/注册

微信扫码登录

0.0365s