欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android LruCache内存缓存图片

程序员文章站 2022-06-19 10:57:16
...

1,实现效果 

  • 软引用,进行内存缓存,在版本更改后,软引用4.0以后很快会被回收,没有起到缓存的效果

 

 

2,实现逻辑

  • LruCache需要分配一些内存空间,一般是最大内存的/8

package com.xiaoshaui.zhbj96.utils.pic;

import android.graphics.Bitmap;

import android.support.v4.util.LruCache;



public class MemCacheUtils {

    LruCache<String, Bitmap> mLruCache;// 存图片





    public MemCacheUtils() {

        super();

        long maxMemory = Runtime.getRuntime().maxMemory();// 当前进程的最大缓存

        // Runtime.getRuntime().totalMemory();//当前申请的内存大小

        // Runtime.getRuntime().freeMemory();//当前申请的内存 剩余的





        // 参1 给缓存分配内存 一般总内存的/8

        mLruCache = new LruCache<String, Bitmap>((int) (maxMemory / 8)) {

            @Override

            protected int sizeOf(String key, Bitmap value) {

                int byteCount = value.getByteCount();

                System.out.println("byteCount=" + byteCount);

                // int byteCount = value.getRowBytes() * value.getHeight();

                return byteCount;

            }

        };

    }

    public void setCache(String url, Bitmap bimBitmap) {

        mLruCache.put(url, bimBitmap);

    }





    public Bitmap getCache(String url) {

        Bitmap bitmap = null;

        bitmap = mLruCache.get(url);

        return bitmap;

    }

}