android内存优化之图片压缩和缓存

由于手机内存的限制和网络流量的费用现在,我们在加载图片的时候,必须要做好图片的压缩和缓存。

图片缓存机制一般有2种,软引用和内存缓存技术。

1.压缩图片:压缩图片要既不能模糊,也不能拉伸图片。

图片操作的时候,最常用的是BitmapFactory,现在看看如何压缩图片。

Bitmapfactory.Options options= new BitmapFactory.Options();

options.inJustDecodeBounds = true;// 如果设置这个参数为ture,就不会给图片分配内存空间,但是可以获取到图片的大小等属性

2.软引用:只要有足够内存,就一直保持独享,直到内存吃紧并且没有强引用的时候回收对象。

主要用SoftReference,用法如下:

private Map<String,SoftReference<Bitmap> imageMap = new HasMap<String,SoftReference<Bitmap>>();

这里的key主要是图片的地址,可以是网络地址,也可以是SD卡上的图片地址。

3. 内存缓存技术:在android 中有一个叫LruCache class,是专门用来做图片缓存处理的。当缓存的图片到达了预先设定的阀值,那么近期使用次数最少的图片会被回收掉。所以首先要设置图片内存大小,然后设置LruCache里面的键值对,URL和图片,重写sizeOf,返回图片数量。

4. android 2.3以后GCC会更加倾向于回收软引用或者弱引用的对象,但是也不能缓存到本地,缓存到本地会容易造成OOM,所以最好是LruCache缓存,设定阀值,超过了就回收。

 

转载于:https://www.cnblogs.com/heavenStrone/p/5801123.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值