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