[关闭]
@ZeroGeek 2015-08-29T08:52:31.000000Z 字数 816 阅读 617

从Zero学习AsyncTask

android


参考 :
http://blog.csdn.net/mylzc/article/details/6784415 图示比较多,易于理解
http://blog.csdn.net/guolin_blog/article/details/11711405 源码角度分析
http://wangkuiwu.github.io/2014/06/25/AsyncTask/ 介绍

相关资料

某评论:

一、AsyncTask是封装好的线程池,比起Thread+Handler的方式,AsyncTask在操作UI线程上更方便,因为onPreExecute()、onPostExecute()及更新UI方法onProgressUpdate()均运行在主线程中,这样就不用Handler发消息处理了;
二、我不太同意封装好就会影响性能的说法,在我实际的运用中,真正的缺点来自于AsyncTask的全局线程池只有5个工作线程,也就是说,一个APP如果运用AsyncTask技术来执行线程,那么同一时间最多只能有5个线程同时运行,其他线程将被阻塞(注:不运用AsyncTask执行的线程,也就是自己new出来的线程不受此限制),所以AsyncTask不要用于多线程取网络数据,因为很可能这样会产生阻塞,从而降低效率。

Thread+Handler机制,Thread通过handler向主线程发送消息、传递数据,来更新UI,但是大量的子线程会分享主线程的系统资源,从而会使主线程因资源受限而导致应用性能降低,更好的方法是使用AsyncTask。

特点

Android 3.0以前:AsyncTask的全局线程池只有5个工作线程,同一时间最多只能有5个线程同时运行。同时存在的线程数最大不能超过128个,线程池里的线程都是并行运行的。
Android 3.0以上(包括):默认单一线程执行,也就是串行,全局线程池是由一个双端队列来管理线程.

源码学习

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注