ListView和RecyclerView

ListView

ListView优化

  1. 当你创建了大量的对象的时候,GC就会频繁的运行。所以在getView()方法中不要创建非常多的对象。最好是,不要在ViewHolder以外创建不论什么对象。

  2. 手动关闭scrollingCache和animateCache。
    scrollingCache本质上是drawing cache,能够让一个View将他自己的drawing保存在cache中(保存为一个bitmap),这样下次再显示View的时候就不用重画了,而是从cache中取出。该设置会使页面的展示更为平滑,但同时更加消耗内存,使页面变得卡顿。默认情况下drawing cahce是禁用的。而在ListView中,scrollingCache是默认开启的,我们能够手动将它关闭。同时ListView也默认开animateCache会消耗大量的内存,频繁调用GC,我们可以手动将它关闭。

ListView图片错位问题

ListView加载图片错位的原因是“View复用+异步加载图片”。
正在被复用的View,先加载了上一次未加载完的图片,再加载当前Item应该加载的图片,会出现闪动效果。
正在被复用的View,先加载了此条Item应该加载的图片,又加载了上一次未加载完的图片,会导致图片显示错误的现象。

解决方案:
在getView刷新数据的时候给View设置图片url的tag,异步加载图片完成后去取tag,判断异步加载下来的图片url是不是tag中的的url。如果是则展示图片,不是则不展示此图片。

猜你喜欢

转载自blog.csdn.net/weixin_33642281/article/details/83720759