Android图片加载方案——如何保证图片清晰度同时,最大限度节省内存使用量

在Android项目中,由于大量图片加载导致的OOM问题被解决,通过使用Drawable代替Bitmap,结合decodeStream优化加载方式,并利用BitmapFactory.Options进行高效压缩,将内存占用从120-250MB降低到60-100MB,实现了近50%的内存优化。详细实践和技巧分享。
摘要由CSDN通过智能技术生成

最近做的项目里,需要在主页面加载很多图片。那么就尝尝出现OOM,尝试了多种方法,最后找到一种很不错的办法,极大的节省了内存空间,原先程序运行时的内存占有量大约在120-200左右,又时甚至能达到醉人的250直接OOM掉。修改过后,长期稳定在60-100M之间。所以说优化了接近50%。那么现在我们就来看看,我是怎么做的~~


【一】使用Drawable代替bitmap

经过实际测试发现,Drawable在加载图片的性能上和占用内存上都远小于bitmap。(实验证明,加载同样的1000张图片,drawable可以快速的加载完1000张图片,而bitmap仅仅加载到第8张就OOM了。。。)本人才疏学浅不止其中奥义,也不知道为什么大家都爱用bitmap,也希望有识之士能够告知我一下原因。

详见:http://blog.csdn.net/zhu071011/article/details/48310597


【二】使用decodeStream杜绝decodeResource

同样是经过大量实干中得出的经验。decodeStream的加载方式是调用了非java层面的代码进行操作的,所以效率很高。经过试验,用bitmap去加载1000张图片,使用decodeResource的只能加载到第8张,使用decodeStream的可以加载到566张,可见其效率提升的多么显著。

示例:


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值