AsyncTask 坑 (三)AsyncTask对象多次执行

Android的AsyncTask设计不允许同一对象多次执行。初始状态为PENDING,execute()启动任务时,非PENDING状态将抛异常。任务执行后变为FINISHED,无法再次执行。Google为实现轻量级简单后台操作限制了此行为。
摘要由CSDN通过智能技术生成

经常看到网上有这种面试题目:一个AsyncTask对象能不能被多次执行?

其实,想知道答案,最好的办法就是看文档说明,要是文档说不行那就是不行,行就是行。

如果想知道的更多,那就看代码呗。


AsyncTask的execute函数

excute是用来启动一个异步任务的API,先看看这个函数,

    @MainThread
    public final AsyncTask<Params, Progress, Result> execute(Params... params) {
        return executeOnExecutor(sDefaultExecutor, params);
    }

下面的这个函数里面可以看到有个成员mStatus,代码很简单,如果mStatus不是PENDING,直接丢异常。

    @MainThread
    public final AsyncTask<Params, Progress, Result> executeOnExecutor(Executor exec,
            Params... params) {
        if (mStatus != Status.PENDING) {
            switch (mStatus) {
                case RUNNING:
                    throw new
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值