盈彩体育注册(中国)有限公司
盈彩体育注册(中国)有限公司 您所在的位置:网站首页 盈彩体育注册(中国)有限公司 Android进阶之彻底理解LruCache缓存机制原理

Android进阶之彻底理解LruCache缓存机制原理

2024-05-06 06:27:41| 来源: 网络整理

[[421640]]前言

Android的三级缓存,其中主要的就是内存缓存和硬盘缓存。这两种缓存机制的实现都应用到了LruCache算法,今天我们就从使用到源码解析,来彻底理解Android中的缓存机制;

一、LruCache概念介绍

1.什么是LruCache?

LruCache是Android 3.1所提供的一个缓存类,所以在Android中可以直接使用LruCache实现内存缓存。而DisLruCache目前在Android 还不是Android SDK的一部分,但Android官方文档推荐使用该算法来实现硬盘缓存;

LruCache是个泛型类,主要算法原理是把最近使用的对象用强引用(即我们平常使用的对象引用方式)存储在 LinkedHashMap 中。当缓存满时,把最近最少使用的对象从内存中移除,并提供了get和put方法来完成缓存的获取和添加操作;

2.LruCache的使用

LruCache的使用非常简单,我们就已图片缓存为例

int maxMemory = (int) (Runtime.getRuntime().totalMemory()/1024);         int cacheSize = maxMemory/8;         mMemoryCache = new LruCache(cacheSize){             @Override             protected int sizeOf(String key, Bitmap value) {                 return value.getRowBytes()*value.getHeight()/1024;             }         }; 

①设置LruCache缓存的大小,一般为当前进程可用容量的1/8;

②重写sizeOf方法,计算出要缓存的每张图片的大小;

注意:缓存的总容量和每个缓存对象的大小所用单位要一致;

二、LruCache的实现原理

LruCache的核心思想很好理解,就是要维护一个缓存对象列表,其中对象列表的排列方式是按照访问顺序实现的,即一直没访问的对象,将放在队尾,即将被淘汰。而最近访问的对象将放在队头,最后被淘汰;

1、构造函数

public LruCache(int maxSize) {         if (maxSize 


【本文地址】 转载请注明 

最新文章

推荐文章

CopyRight 2018-2019 盈彩体育注册(中国)有限公司 版权所有 豫ICP备16040606号-1