在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的一个