zoukankan      html  css  js  c++  java
  • LruCache缓存机制

    LruCache:

    Android提供的使用了(Least Recently Used)近期最少使用算法的缓存类

    内部基于LinkedHashMap实现

    实现这个主要需要重写

    • 构造时需要确定Cache的最大内存,一般通过
        //获取程序最大可用内存
        int max = (int)Runtime.getRuntime().maxMemory();
        //取可用内存的四分之一做缓存
        int size = max/4;
    
    • sizeOf()方法:在添加value到Cache时会被调用,需要返回添加进数据的字节大小

    • put(key,value)添加时先通过get(key)判断是否已经有key对应的value存在

    在内存缓存图片的简单实现:

    public class MyLruCache extends LruCache<String, Bitmap> {
    
        private static MyLruCache myLruCache;
    
        private MyLruCache(int maxSize) {
            super(maxSize);
        }
    
        public static MyLruCache getMyLruCache() {
            if (myLruCache == null) {
                int maxMemory = (int) Runtime.getRuntime().maxMemory();
                int maxSize = maxMemory / 4;
                myLruCache = new MyLruCache(maxSize);
            }
            return myLruCache;
        }
    
        //每次存入bitmap时调用,返回存入的数据大小
        @Override
        protected int sizeOf(String key, Bitmap value) {
            return value.getByteCount();
        }
    
    	//添加
        public void add(String key, Bitmap bitmap) {
            if (get(key) == null) {
                put(key, bitmap);
            }
        }
     
     	//获取
        public Bitmap getBitmap(String key) {
            return get(key);
        }
    
    }
    
  • 相关阅读:
    查找算法:二分查找法(折半查找)
    钞票找零-贪心,动态规划算法
    PHP7与php5
    网站高并发解决方案(理论知识) 二
    loj#6566. 月之都的密码
    我的 Linux 配置
    CTSC2011 幸福路径
    WC2018 即时战略
    uoj#460 新年的拯救计划
    bzoj 5016 一个简单的询问
  • 原文地址:https://www.cnblogs.com/jiy-for-you/p/7282023.html
Copyright © 2011-2022 走看看