Android AsyncTask源代码浅析

本文深入探讨了Android的AsyncTask,解析其生命周期中的PENDING、RUNNING和FINISHED三个状态,以及如何防止多次执行。文章指出,AsyncTask的doInBackground()方法在后台线程中作为Callable的call()执行,返回值通过FutureTask传递给onPostExecute()进行UI更新。此外,还讨论了Callable、FutureTask在多线程编程中的作用,以及如何通过FutureTask的cancel()方法取消任务。
摘要由CSDN通过智能技术生成

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭梧悠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值