什么是AsyncTask?
AsyncTask是一个抽象类,它是由Android封装的一个轻量级异步类,它可以在线程池中执行后台任务,然后把执行的进度和最终的结果传递给主线程并在主线程更新UI
AsyncTask的内部封装了两个线程池(SerialExecutor和THREAD_POOL_EXECUTOR)和一个Handler(InternalHandler)
其中SerialExecutor用于任务的排队,让需要执行的多个耗时任务,按顺序排列,THREAD_POOL_EXECUTOR线程池才真正地执行任务,InternalHandler用于从工作线程切换到主线程
AsyncTask的类声明如下:
public abstract class AsyncTask<Params,Progress,Result>
AsyncTask是一个抽象泛型类,其中,三个泛型参数含义有:
- Params:开始异步任务执行时传入的参数类型
- Progress:异步任务执行过程中,返回下载进度值的类型
- Result:异步任务执行完成后,返回的结果类型
如果AsyncTask确定不需要传递任何参数,三个泛型参数可以用void来代替