Android ListView优化思路12则
CatRQD
8年前
<p style="text-align: center;"><img src="https://simg.open-open.com/show/ed0d57b8f76a17c4eb32cf3aaf5aa0f6.jpg"></p> <p style="text-align: center;">超蓝.jpg</p> <p>1、ViewHolder模式,而且ViewHolder作为内部类使用时声明为static的</p> <p>2、异步加载:耗时的操作放在异步线程中</p> <p>如果在adapter中的某些操作需要耗费大量的时间,这个时候就要用到异步线程来进行异步就在数据。比如:现在要加载图片,此时我们需要根据url访问网络得到数据,然后将数据解析为Bitmap设置给View</p> <p>3、listView错位加载问题:判断url是否一致解决</p> <p>4、为图片设置缓存</p> <p>5、ListView的滑动时停止加载和分页加载</p> <p>6、硬件加速,硬件加速只需要设置--android:hardwareAccelerate="true"即可</p> <p>7、自定义view降低层级</p> <p>8、对于一些并非需要刷新整个ui的操作,尽可能做到单个ui刷新,不要让整个可见视图整体做视图渲染</p> <p>9、listview在拖动的时候背景图片消失变成黑色背景,等到拖动完毕我们自己的背景图片才显示出来;所以需要将android:scrollingCache=”false” 或 android:cacheColorHint=”#00000000″</p> <p>10、animateCache: ListView默认开启了animateCache,这会消耗大量的内存,因此会频繁调用GC,我们可以手动将它关闭掉</p> <p>11、使用 RecycleView 代替。</p> <p>ListView 每次更新数据都要 notifyDataSetChanged(),有些太暴力了。RecycleView 在性能和可定制性上都有很大的改善,推荐使用</p> <p>12、处理空ListView</p> <p>ListView用于展示列表数据,但当列表中无数据时,ListView不会显示任何数据或提示,按照完善用户体验的需求,这里应该给以无数据的提示。幸好,ListView提供了一个方法——setEmptyView(),通过这个方法,我们可以给ListView设置一个在空数据下显示的默认提示。</p> <p> </p> <p>来自:http://www.jianshu.com/p/539218c871cf</p> <p> </p>