LruCache

LruCache基础知识

1、LruCache是计算机科学经常使用的一种近期最少使用算法

2、LruCache内部采用的是LinkedHashMap

3、LruCache的出现时为了取代SoftReference

Android 3.0之前做图片缓存主要用的就是SoftReference,3.0以后虚拟机更倾向于用SoftReference来索引对象,所以LruCache的出现就是为了取代它。

代码讲解

/**
 **用来加载网络图片,并缓存到内存
 */
public class SimpleImageLoader{
    private static SimpleImageLoader mLoader;
    private LruCache<String,Bitmap> mLrucache;
    public static SimpleImageLoader getInstance(){
        if(mLoader ==  null){
            synchronized (SimpleImageLoader.class){
                if(mLoader == null){
                    mLoader = new SimpleImageLoader();
                }
            }
        }
        return mLoader;
    }
    //用来初始化缓存对象
    private SimpleImageLoader(){
        //获取到最大可用的内存空间
        int maxSize = (int)Runtime.getRuntime().maxMemory()/8;//一般用除以八来表示,具体视APP大小而定
        mLrucache = new LruCache<String,Bitmap>(maxSize){
            @Override
            protected int sizeOf(String key, Bitmap value) {
                return value.getByteCount();
            }
        };
    }
    //用来加载网络图片
    public void displayImage(ImageView view, String url){
        //首先判断内存缓存中是否有这张图片
        Bitmap bitmap = getBitmapFromCache(url);
        if(bitmap != null){
            view.setImageBitmap(bitmap);
        }else{
            downloadImage(view,url);
        }
    }

    //从缓存中读取图片
    private Bitmap getBitmapFromCache(String url){
        return mLrucache.get(url);
    }

    //将下载下来的图片保存到缓存中
    private void putBitmapToCache(Bitmap bitmap,String url){
        if(bitmap !=null){
            mLrucache.put(url,bitmap);
        }
    }
    private void downloadImage(final ImageView imageView,final String url){
        //从网络下载图片,下载成功后并保存在缓存中
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值