android内存优化之图片压缩和缓存
2016-08-23 22:48
274 查看
由于手机内存的限制和网络流量的费用现在,我们在加载图片的时候,必须要做好图片的压缩和缓存。
图片缓存机制一般有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缓存,设定阀值,超过了就回收。
图片缓存机制一般有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缓存,设定阀值,超过了就回收。
相关文章推荐
- Android中图片压缩技术以及图片缓存避免OOM
- Android:ListView异步加载图片(实现网络下载、存储本地、缓存内存、压缩显示)
- Android图片压缩及内存缓存
- Android-单线程轮循机制批量下载图片、图片压缩、内存泄漏、图片缓存、文件缓存
- Android 图片压缩和缓存工具类
- android开发之就本地和网络图片的压缩以及缓存详解
- android 图片处理(压缩与缓存)
- android 图片工具类 (图片压缩 图片长按缓存 Bitmap转Base64 Bitmap转File File转Bitmap 打开系统相册解析URI)
- Android高效加载大图、多图解决方案,有效避免程序OOM (图片压缩和图片缓存LruCache)
- Android项目实战-ListView异步图片加载及压缩缓存
- 【android】怎么压缩和缓存图片?告诉你正确的姿势
- 详解Android 图片的三级缓存及图片压缩
- Android 之 远程图片获取和本地缓存
- Android 之 远程图片获取和本地缓存
- Android Jamendo开源在线音乐播放器源码分析七 数据缓存和图片缓存的分析
- Android对图片的压缩读取和保存
- Android远程图片获取和本地缓存
- Android实现ListView异步加载图片+缓存+线程池管理
- Android 远程图片获取和本地缓存(一)
- Android对图片的压缩读取和保存