ListView优化的几种方法

ListView不得不说是Android中最难用的控件之一,说它难用主要是因为它有太多的细节可以优化。那么下面就介绍几种ListView优化的方法。
其实ListView的优化主要分为以下三个方面:
1)采用ViewHolder并避免在getView中执行耗时操作。
2)根据列表的滑动状态来控制任务的执行频率。
3)尝试开启硬件加速来使ListView的滑动更加流畅。

1)不要再getView中执行耗时操作。例如不要再getView方法中加载图片,因为加载图片是一个耗时操作,必然会导致卡顿,所以加载图片应该使用异步的方式来处理,例如ImageLoader。同时也应该减少findViewById方法的执行,因为这个方法也是要消耗资源的。所以应该定义一个ViewHolder来管理这些id,然后通过tag去直接获取id。复用convertView也是很好的办法,不然若是有上万的数据,当我们滑动ListView时,就会产生上万的convertView,这对内存的消耗是难以想象的。

2)控制异步任务的执行频率也是很重要的。对ListView来说,仅仅在getView方法中采取异步操作是不够的。若是用户大量频繁的去滑动列表,就会在一瞬间产生大量的UI更新操作,这些异步任务都是在主线程执行的,就会造成线程池阻塞,也是会导致卡顿的。那么我们可以考虑在列表滑动的时候停止加载部分资源,例如图片。等待列表停下来再去加载这些。具体实现就是去设置在OnScrollListener中去监听onScrollStateChanged的方法中判断列表是否处于滑动状态即可。同时,分页加载,预加载也是很好的方式。

此外,还有一些办法,例如列表中有图片的时候可以对图片进行一些优化,例如对图片进行压缩,加载图片的时候采用三级缓存。

3)硬件加速,硬件加速只需要设置--android:hardwareAccelerate="true"即可。

此外,对ListView的优化方法也同时适用于GridView。

你可能感兴趣的:(ListView优化的几种方法)