一、AsyncTask简介
AsyncTask是一个专门用来处理后台进程与UI线程的工具。AsyncTask背后的实现原理是基于异步消息处理机制的,这个类主要是为耗时操作开辟一个新线程,基于此类可以实现UI线程和后台线程间的通讯,后台线程执行异步任务,并把结果返回给UI线程。
AsyncTask是一个轻量级的异步任务类,它可以在线程池中执行后台任务,然后把执行的进度和最终的结果传递给主线程并在主线程中更新UI。从实现上来说,AsyncTask封装了Thread和Handler,通过AsyncTask可以更加方便地执行后台任务以及在主线程中访问UI,但是AsyncTask并不适合进行特别耗时地后台任务,对于特别耗时的任务来说,建议使用线程池。
二、AsyncTask的基本组件
由于AsyncTask是一个抽象类(即使用时需要实现子类),所以我们想使用它必须创建一个子类去继承它。在继承时需要指定3个泛型参数:
(1)Params,在执行AsyncTask时需要传入的参数,可用于在后台任务中使用。
(2)Progress,后台任务执行时,如果需要在界面上显示当前的进度,则使用这里指定的泛型作为进度单位。
(3)Result,当任务执行完毕后,如果需要对结果进行返回,则使用这里指定的泛型作为返回值类型。
因此,一个简单的自定义AsyncTask就可以写成如下方法:
class a extends AsyncTask<Void, Integer, Boolean>(
//将第一个泛型参数设置为Void,表示在执行时不需要传入参数给后台任务。
//将第二个泛型参数设置为Integer,表示使用整型数据来作为进度显示单位。
//将第三个泛型参数设置为Boole