经常看到网上有这种面试题目:一个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