Android listview 异步加载图片乱序问题,原因分析及解决方案

解决方案一、使用findViewWithTag

findViewWithTag算是一种比较简单易懂的解决方案,
先调用ImageView的setTag()方法,并把当前位置图片的URL地址作为参数传进去,这个是为后续的findViewWithTag()方法做准备。

解决方案二、使用弱引用关联,
但实际上弱引用只是辅助手段而已,最主要的还是关联,这种解决方案的本质是要让ImageView和BitmapWorkerTask之间建立一个双向关联,互相持有对方的引用,在通过适当的逻辑判断来解决图片乱序问题,然后为了防止出现内存泄漏的情况,双向关联要使用弱引用的方式建立。相比于第一种解决方案,第二种解决方案明显复杂不少,但是在性能和效率方面都会有更好的表现。

解决方案三、使用NetworkImageView
前面两种解决方案都需要我们自己去做额外的逻辑处理,因为ImageView本身是不能自动解决这个问题的,但是如果我们使用NetworkImageView这个控件的话就分成简单了,它自身就已经考虑到了这个问题,我们之间使用它就可以了,不用走任何额外的处理也不会出现图片乱序的情况。
NetworkImageView是volley当中提供的控件

这主要是得益于Volley的出色设计。由于Volley在网络方面的封装非常优秀,它可以保证,只要是取消掉的请求,就绝对不会进行回调,既然不会回调,那么也就不会回到NetworkImageView当中,自然就不会出现乱序的情况了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值