AsyncTask异步任务

AsyncTask类似于Handle,它更轻量级,不需要借助线程和Handle,采用的是Thread_Pool_Executor线程池,不适合执行耗时长的任务;

配置后的线程池如下:

1.核心线程数等于CPU核心数+1;

2.线程池的最大线程数为CPU核心数的2倍+1;

3.任务队列容量为128;

 

AsyncTask<Params,Progress,Result>是一个抽象类:Params执行任务要输入的参数的类型(URL等等),Progress后台完成任务进度值的类型,Result后台任务结束返回结果的类型;

 

 

一般在主线程中定义这个内部类(共享组件等等),实现这个类要自定义类继承它,终点重写四个方法:

1.DoinBackground():耗时任务执行的地方;

2.onpreexecute():一般用来显示任务进度条

3.onprogressUpdate():一般用来更新进度条的进度值;

4.onPostExecute():当任务完成时,将结果返回在这个方法中;

 

创建这个AsyncTask子类对象,并实现execute(params)方法来开始执行任务;

注意:必须在UI中创建AsyncTask对象和实现它的execute方法;每个AsyncTask只能被执行一次,不能多次;

 

Executor接口和Executors工厂类:通过工厂类创建

AsyncTask异步任务

 

ExecutorService接口继承Executor接口,底下有俩实现类ThreadPoolExecutor和ScheduleExecutorService

AsyncTask异步任务