package com.atguigu.baselibrary;
import android.graphics.Bitmap;
import android.os.Handler;
import android.util.Log;
/**
* 作者:尚硅谷-杨光福 on 2017/2/10 09:32
* 微信:yangguangfu520
* QQ号:541433511
* 作用:三级缓存工具类
*/
public class BitmapCacheUtils {
//网络缓存工具类
private NetCacheUtils netCacheUtils;
//本地缓存工具类
private LocalCacheUtils localCacheutils;
//内存缓存工具类
private MemoryCacheUtils memoryCacheUtils;
public BitmapCacheUtils(Handler handler) {
memoryCacheUtils = new MemoryCacheUtils();
localCacheutils = new LocalCacheUtils(memoryCacheUtils);
netCacheUtils = new NetCacheUtils(handler, localCacheutils,memoryCacheUtils);
}
/**
* 三级缓存设计步骤:
* * 从内存中取图片
* * 从本地文件中取图片
* 向内存中保持一份
* * 请求网络图片,获取图片,显示到控件上
* * 向内存存一份
* * 向本地文件中存一份
*
* @param url
* @param position
* @return
*/
public Bitmap getBitmapFromNet(String url, int position) {
//1.从内存中取图片
if (memoryCacheUtils != null) {
Bitmap bitmap = memoryCacheUtils.getBitmapFromUrl(url);
if (bitmap != null) {
Log.e("TAG", "内存缓存图片成功==" + position);
return bitmap;
}
}
//2.从本地文件中取图片
if (localCacheutils != null) {
Bitmap bitmap = localCacheutils.getBitmapFromUrl(url);
if (bitmap != null) {
Log.e("TAG", "本地缓存图片成功==" + position);
return bitmap;
}
}
//3.请求网络图片,获取图片,显示到控件上
netCacheUtils.getBitmapFromNet(url, position);
return null;
}
}