AsyncTask的版本差异及其与Thread的使用场景
来源:程序员人生 发布时间:2014-11-13 08:50:55 阅读次数:3290次
/**
* AsyncTask相干总结
*
* 1 异步任务AsyncTask在不同Android版本的差异.
* 该差异主要是Android2.3和Android3.0及其以后的差异
*
* 差异内容:
* 在Android2.3中AsyncTask的调用可以并发履行.
* 由于它在1个线程池中被调用.该线程池有5个核心线程,且最大线程数为128个.
* 比如:同时启动10个任务,有5个任务能够立刻履行,另外5个任务则需等待;当有1个任务履行终了后,第6个任务才会启动,以此类推.
* 由于线程池中最大能寄存的线程数是128个,当我们尝试去添加第129个任务时,程序会崩溃.
*
* 在Android3.0及其以后AsyncTask的调用在默许情况同时只能有1个任务在履行.
* 在AsyncTask中采取了SerialExecutor,它很类似于SingleThreadExecutor,即线程池中只有1个线程的线程池.
* 所以在2.3以后调用asyncTask.execute(params)方法,同时只能有1个任务在履行.待该任务履行完成后再履行下1个任务.
* 那末可以修改该默许设置么?固然是可以的.
* 可以调用方法asyncTask.executeOnExecutor(executor, params);
* 第1个参数executor就设置为1个自己配置的线城池
*
* 2 AsyncTask和Thread的使用处景的区分
* AsyncTask简单灵活,不用斟酌UI更新.但是要注意AsyncTask版本差异带来的问题,请参考上面的总结.
* 当有大量的瞬时任务出现时应当斟酌使用线程池,可以节省线程的创建和烧毁的消耗
*
*
*
* 参考资料
* 1 Nate的教程
* 2 http://androidxref.com/4.0.4/xref/
* 3 http://blog.csdn.net/guolin_blog/article/details/11711405
* 4 http://blog.csdn.net/chenzujie/article/details/9247243
* Thank you very much
*
*/
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠