一、AsyncTask是封装好的线程池,比起Thread+Handler的方式,AsyncTask在操作UI线程上更方便,因为onPreExecute()、onPostExecute()及更新UI方法onProgressUpdate()均运行在主线程中,这样就不用Handler发消息处理了;
二、AsyncTask的全局线程池只有5个工作线程,也就是说,一个APP如果运用AsyncTask技术来执行线程,那么同一时间最多只能有5个线程同时运行,其他线程将被阻塞(注:不运用AsyncTask执行的线程,也就是自己new出来的线程不受此限制),所以AsyncTask不要用于多线程取网络数据,因为很可能这样会产生阻塞,从而降低效率。
AsyncTask,是有缓存,不能同时运行多个的,得排个小队,没仔细算过,不过约莫四五个吧。 实在是想很多一起种跑起来的话,建议使用ThreadPoolExecutor, 指定维护的最大,最小,及队列情况,都可以很好的控制,
Runable 为任务对象,加上handler ,基本相干嘛都行了。
AsyncTask用的是线程池机制,容量是128,最多同时运行5个core线程,剩下的排队。