• 29 三级缓存案例


    LRU:least rencently used 最近最少使用

    LruCache 会在内存不足的杀死最近不常用的资源

    package com.qf.sxy.day30_cache.utils;
    
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.util.Log;
    import android.util.LruCache;
    
    import com.qf.sxy.day30_cache.asynctask.DownLoadImage;
    import com.qf.sxy.day30_cache.interfacecallback.ImageCallBack;
    
    /**
     * Created by sxy on 2016/9/30.
     * 进行缓存和处理图片
     */
    public class LruCacheUtils {
    
        //Lru缓存
        private LruCache<String,Bitmap> cache;
        private  Context context;
        private ImageCallBack imageCallBack;
    
        public LruCacheUtils(Context context,ImageCallBack imageCallBack){
    
            this.context = context;
            this.imageCallBack = imageCallBack;
            //运行时内存的1/8大小
            long maxMemory = Runtime.getRuntime().maxMemory();
            int maxSize =(int)(maxMemory/8);
            cache = new LruCache<String,Bitmap>(maxSize){
    
                //返回图片的大小
                @Override
                protected int sizeOf(String key, Bitmap value) {
                    return value.getByteCount();
                }
            };
        }
    
    
        //获取图片
        public Bitmap getBitmap(String key){
    
            //从缓存中找
            Bitmap bitmap = cache.get(key);
            if (bitmap!=null){
                Log.e("AA","==Lru==");
                return bitmap;
            }else{
                //从Sd找
                bitmap = Utils.getBitmapFromSD(key,context);
                if (bitmap!=null){
                    Log.e("AA","==SD==");
                    //存到缓存
                    cache.put(key,bitmap);
                    return bitmap;
                }else{
                    Log.e("AA","==NET==");
                    //下载图片
                    new DownLoadImage(context,cache,imageCallBack).execute(key);
                }
            }
    
    
            return null;
        }
    
    }
    
  • 相关阅读:
    Javascript倒计时页面跳转
    php计算时间差的方法
    php mysqli多个查询的例子
    结束线程方法2 Java提供的中断机制
    结束线程方法1:使用退出标志
    Java并发编程面试题1
    生产者消费者 java.util.concurrent.lock包
    多线程实例1 一个线程写入人员信息,一个线程读取人员信息
    Java并发编程笔记
    mysql案例-sysbench安装测试
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152161.html
Copyright © 2020-2023  润新知