ListView卡顿优化过程,并解决与viewpager图片加载冲突的问题

首先说明这一片只针对我自己的情况,可能对普遍类的卡顿没有太大帮助。

其实在完成夜间模式前就发现主界面的listview卡顿的难以忍受,上网搜索资料有很多方法优化,我主要是将getview里的代码优化。

getview里最好不要有耗时操作,而我的getview方法中就存在着一个异步加载图片的过程,首先我的异步加载图片的方法可以将加载后的图片设置到imageview中,所以一开始的时候我就写在getview方法里了,所以首先先将加载图片的过程拿出来,配置adapter时直接将下载的图片通过hashmap传入,这里要注意hashmap是线程不安全的类型,异步加载图片必将会使多个线程同时对该hashmap进行增减,所以要通过collections将其改为线程安全类,如下:

private Map<String, Bitmap> bitmaps =  Collections.synchronizedMap(new HashMap<String, Bitmap>())
上述问题改完后遇到另一个问题,就是我的listview通过addhead加入了一个viewpager,多次测试发现加入viewpager的数据图片在listview中首次加载不出来,这个结果也是测试了好久才发现规律,主要是因为listview与viewpager两个加载图片是分开的,但是图片最后保存以及命名都是统一的,造成了viewpager加载完成后listview相应的没有能加载出来,并且两部分分开加载也造成了资源浪费。于是便修改viewpager的adapter,让viewpager的图片直接从listview加载的图片中取出来相应的项目,这样测试总算通过了。


总结:getview中不要进行耗时操作

    网络操作要尽可能的集中,减少资源消耗

    数据更新完毕后及时调用adapter.notifyDataSetChanged();来进行更新数据,这样才能达到图片异步加载中的加载的步骤

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值