经常看到网上有这种面试题目:一个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 IllegalStateException("Cannot execute task:"
+ " the task is already run

Android的AsyncTask设计不允许同一对象多次执行。初始状态为PENDING,execute()启动任务时,非PENDING状态将抛异常。任务执行后变为FINISHED,无法再次执行。Google为实现轻量级简单后台操作限制了此行为。
最低0.47元/天 解锁文章
1915

被折叠的 条评论
为什么被折叠?



