Android图片墙的优化处理

1、图片墙的优化处理。
阐述应用场景,在开发运用中,我们经常会碰到图片墙的运用。
用得比较多的就是一些购物软件,摆上一墙的图片。


遇到的问题:
我们在现实中容易遇到,图片太多,内存不足,导致系统出现崩溃(OOM)。

原因:
由于Android 对图片内存做了8M的内存限制(不同机型内存限制不相同,有的有16M),
如果图片的内存BITMAP 超出了8M,系统就提示内存溢出OOM(out of memory),程序就会崩溃。
google之所以这么做限制主要是因为太大图片内存消耗是不科学的,对系统的内存资源占据太多会影响系统和其他的APP和自己APP的稳定性的操作流畅度。
所以这个8M估计是google从理论和实践的过程中摸索出来的综合值。


场景:
如图我们在Android中加载一大块的瀑布流照片墙,假设这些图片一张有1M,那么一个屏幕下来9张,也就是9M了,那么在我们进入这个照片墙的时候系统马上崩溃(OOM)。
如何有效的防止这种状况出现呢?(重要)
1、对单个图片做压缩处理,为了保证图片的不变形,最好做等比例压缩,使一个屏幕的显示的时候不会出现OOM。
2、在快熟滑动页面的时候,不对图片做加载,不写入内存中,用开源库ImageLoader可以实现。
3、用LruCache 来管理内存防止内存溢出,(脑补)
LruCache是用一个 强引用的 linkedHashMap来管理缓存,
用户可以为 LruCache分配一个内存大小区域,如果我们加入到这个LruCache的bitmap 的Size超过了,LruCache 的maxSize,LruCache就会对 memoryCache 队列中的最先进来的一个进行回收,这样就有效的防止了内存溢出的发生。


当然除了以上的这些处理方式,
你也可以应用一些框架 xutil,ImageLoader,volley,或者前不久facebook开源的一款fresco(据说也很吊)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值