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工厂类:通过工厂类创建
ExecutorService接口继承Executor接口,底下有俩实现类ThreadPoolExecutor和ScheduleExecutorService