博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android内存优化之图片压缩和缓存
阅读量:7117 次
发布时间:2019-06-28

本文共 771 字,大约阅读时间需要 2 分钟。

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

图片缓存机制一般有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

你可能感兴趣的文章
如何发布第一个属于自己的npm包
查看>>
Git使用入门
查看>>
定义ll命令
查看>>
maven打jar包 没有主属性清单
查看>>
相机技术公司Lytro获6000万美元D轮融资,阿里巴巴参投
查看>>
Adobe MasterCollection CS5 试用版下载链接
查看>>
Using the itemDoubleClick event to open nodes in a Flex Tree control
查看>>
JVM快速调优手册v1.0
查看>>
linux基础--awk文本分析工具详解
查看>>
菜单中英文切换
查看>>
radware alteon 负载均衡器设置
查看>>
剑指Offer之在O(1)时间删除链表节点(题13)
查看>>
oracle goldengate实施简明介绍
查看>>
如何不让你的APP在模拟器中运行。
查看>>
wiki迁移方法操作步骤
查看>>
IIS应用程序池死报“数据字段包含错误号” 的解决办法
查看>>
js数字比较【牢记】
查看>>
可以用img做参数的成功例子
查看>>
部分添加epel源失败的可以试试直接把mirror站网址写到baseurl里
查看>>
CPU调优并发问题
查看>>