ListView的四层优化

 ListView 优化
 0层优化:不优化
 1层优化:最多加载 n+1 个 convertView
复用 convertView 每次不用去加载一个新的 view 复用 convertView 来解决每次都加载一个新的 view 
这样就不用每次都加载一个新的view到内存中,减少了对内存的使用
 
 2层优化:优化 convertView 里面的子 view
优化其他的显示视图,如 TextView 
一层优化只优化了 convertView 没有优化 convertView 里面的子 view,即使一层优化,优化了convertView
   但是里面的子 view 还是每次都去加载,这样对内存也是相当好资源的
所有二层优化就是优化 convertView 里面的子 view
也是使用 setTag 的方式来进行优化
 3层优化:
对图片的优化,即加载图片,使用图片的三级缓存
   图片的三级缓存
   1).一级缓存(内存缓存),图片在内存中,直接加载,如果内存缓存中没有,则向二级缓存中加载图片
   2).二级缓存(本地缓存),图片保存在本地SD卡中,如果一级缓存中没有才在二级缓存中加载图片,如二级缓存中也没有
   则向三级缓存中加载,如果有,加载的同时把图片保存到一级缓存中
   3).三级缓存(服务器缓存),图片保存在服务器端,如果在一级缓存和二级缓存中都没有找到图片,就到服务器端的三级缓存中
  加载,加载过来显示出来的同时,保存到一级缓存和二级缓存中
使用图片的三级缓存存在的问题(图片的闪屏)
   当快速滑动的时候,会出现图片的缓存,因为 convertView 的复用,和线程的多次启动,但是还没来得及显示图片就被复用,
但是又是一个新的线程,同一个视图,多个线程,多张图片,所以就会出现闪屏的问题
   解决办法:
   使用 view 的setTag方法,把要显示的图片,保存到里面
在启动分线程联网请求和显示图片的时候通过getTag取出来
   再启动分线程联网请求图片是,要请求的图片是不是要显示的,如果不是,则结束
在显示图片之前判断是不是要显示的那张图片,有可能已经被更改了,如果不是结束,
 4层优化:
   当数据量非常大的时候,就需要使用四次优化,分页或者其他技术
   数据全部是从服务器端获取,不可能一次获取全部的数据,都是每次只获取部分数据显示
   而不是全部加载到客户端进行显示,可能使用到的技术:分页,下拉刷新等
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值