您的位置:首页 > 移动开发 > Android开发

android 图片的三级缓存原理

2015-12-31 17:02 253 查看
android 图片的三级缓存有:缓存在内存中 缓存在SD卡里, 联网缓存

用AsyncTask进行网络下载  并将之存储到SD卡里,然后再存储到内存中

存储到内存中和从SD卡里读取图片都要解决OOM异常

Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), opts);

Options opts = new Options();

opts.inJustDecodeBounds = true;//只加载图片的宽高

计算缩放比率

获取图片的宽高和手机屏幕的宽高(context.getResource.getDisplayMetrics.width/hight)

用图片宽高/手机屏幕宽高 来获取缩放的最大比率

再将之放入map集合中

该map是Lrucache<String,Bitmap> map=new LruCache<String, Bitmap>(maxSize){

//返回Bitmap的大小
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getRowBytes()*value.getHeight();
}

};

int maxsize=((int)Runtime.getRuntime().maxMemory)/8 内存的1/8来存储图片

Lrucache类能将java中的强引用对象转换为软引用对象,它是安卓的处理图片缓存的

轻量级类

LruCache要比SoftReference 智能   里面有一套算法,它会将最近最少使用的图片给销毁释放内存
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: