首先我们要知道的是什么是线程
线程是系统调度的最小单元,用于执行任务用,线程分为主线程和子线程
为什么要使用线程
Android中的主线层又称之为UI线程,主要用来运行四大组件
又由于Android中有时候需要执行耗时任务,如网络请求等,但是Android中主线程是不能执行耗时任务的,容易造成ANR,这时就需要在子线程中执行耗时任务,在主线程更行UI
同时,线程也是个受限的资源,一个系统创建太多线程会导致资源开销,容易导致系统崩溃,这时候就需要线程池对于线程进行统一的管理和复用,线程池中缓存了多个线程,
什么是AsyncTask?
AsyncTask 是一个异步线程的调度类,是用来执行耗时任务更新UI的任务类
Android中AsyncTask底层对于Handler 和线程池作了封装
其中有俩个线程一个是队列的线程池,另一个才是具体任务的线程池
其中有4个关键的回掉,onPreExcute()
ondoInBackground()
onProgressUpdate()
onPostExcute()
线程池
Executor 在Android的具体实现类是ThreadPoolExecutor()
提供了一些参数用于对线程池的配置(具体配置查询api可知)