我们都知道 Android 应用程序是单线程模型,在子线程无法直接操作 UI 主线程,必须通过 Handler 机制,想了解这方面的知识可以参考这篇文章:Android 消息传递之 Handler 消息机制(一),所以基于这种考虑所以我们一般情况会采用 Thread+Handler 来处理比较耗时的操作,但是我们都知道每次 new Thread() 开销比较大,而且缺乏管理,被称为野线程,而且可以无限制创建,之间相互竞争,会导致过多占用系统资源导致系统瘫痪,不利于扩展,比如如定时执行、定期执行、线程中断,这时我们引入了线程池的概念,整个解决问题的模型就变成了 Runnable+Executor+Handler, 为了降低开发者的开发难度,AsyncTask 应运而生,AsyncTask 是对线程池的一个封装,使用其自定义的 Executor 来调度线程的执行方式(并发还是串行),并使用 Handler 来完成子线程和主线程数据的共享。