首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android多线程任务优化一:探讨AsyncTask的缺陷(转)

2013-06-26 
Android多线程任务优化1:探讨AsyncTask的缺陷(转)2、线程池中已经有5个线程,缓冲队列未满,异步任务将会放到

Android多线程任务优化1:探讨AsyncTask的缺陷(转)

2、线程池中已经有5个线程,缓冲队列未满,异步任务将会放到缓冲队列中等待

Android多线程任务优化一:探讨AsyncTask的缺陷(转)

3、线程池中已经有5个线程,缓冲队列已满,那么线程池将新开工作线程执行异步任务

Android多线程任务优化一:探讨AsyncTask的缺陷(转)

问题:Android的设备一般不超过2个cpu核心,过多的线程会造成线程间切换频繁,消耗系统资源。

4、线程池中已经有128个线程,缓冲队列已满,如果此时向线程提交任务,将会抛出RejectedExecutionException

Android多线程任务优化一:探讨AsyncTask的缺陷(转)

问题:抛出的错误不catch的话会导致程序FC。

?

好吧,理论分析之后还是要结合实际例子,我们通过实现一个模拟异步获取网络图片的例子,看看会不会出现上面提到的问题。

?

例子:使用GridView模拟异步加载大量图片

ActivityA.java

?

?

由运行图可见

当网络情况较差,异步任务不能尽快完成执行的情况下,新开的线程会造成listview滑动不流畅。当开启的工作线程过多时,还有出现FC的可能。

至此,你还相信万能的AsyncTask吗?至于你信不信,反正我不信。

总结:

AsyncTask可能存在新开大量线程消耗系统资源和导致应用FC的风险,因此,我们需要根据自己的需求自定义不同的线程池,由于篇幅问题,将留到下篇再讲。

热点排行