Android ListView优化思路12则

超蓝.jpg

1、ViewHolder模式,而且ViewHolder作为内部类使用时声明为static的

2、异步加载:耗时的操作放在异步线程中
如果在adapter中的某些操作需要耗费大量的时间,这个时候就要用到异步线程来进行异步就在数据。比如:现在要加载图片,此时我们需要根据url访问网络得到数据,然后将数据解析为Bitmap设置给View

3、listView错位加载问题:判断url是否一致解决

4、为图片设置缓存

5、ListView的滑动时停止加载和分页加载

6、硬件加速,硬件加速只需要设置--android:hardwareAccelerate="true"即可

7、自定义view降低层级

8、对于一些并非需要刷新整个ui的操作,尽可能做到单个ui刷新,不要让整个可见视图整体做视图渲染

9、listview在拖动的时候背景图片消失变成黑色背景,等到拖动完毕我们自己的背景图片才显示出来;所以需要将android:scrollingCache=”false” 或 android:cacheColorHint=”#00000000″

10、animateCache: ListView默认开启了animateCache,这会消耗大量的内存,因此会频繁调用GC,我们可以手动将它关闭掉

11、使用 RecycleView 代替。
ListView 每次更新数据都要 notifyDataSetChanged(),有些太暴力了。RecycleView 在性能和可定制性上都有很大的改善,推荐使用

12、处理空ListView
ListView用于展示列表数据,但当列表中无数据时,ListView不会显示任何数据或提示,按照完善用户体验的需求,这里应该给以无数据的提示。幸好,ListView提供了一个方法——setEmptyView(),通过这个方法,我们可以给ListView设置一个在空数据下显示的默认提示。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,046评论 25 709
  • 那日路过你 满树垂挂的丝丝粉嫩 着实让我沉迷 但我竟一时说不出你的芳名 急问室友才想起“合欢”这两个明朗的字眼 思...
    楊小汪阅读 3,165评论 0 3
  • 今日,北京惊现霸气云南手抓饭 光是体格上 就让不少自称“大锅饭”的食物汗颜 这是一个要两个人抬上桌的 直径一米多的...
    北京头牌阅读 2,087评论 0 0
  • 今天和大学同学聊天。我们毕业三年了,三年,大家的境况差别很大,有的同学结婚了,有的同学还在读研,马上毕业,大部分同...
    红玫瑰和白汽球阅读 514评论 0 1