Android LruCache源码分析

0
回复
142
查看
[复制链接]

1

主题

1

帖子

10

安币

初级码农

Rank: 1

发表于 2019-5-20 18:15:01 | 显示全部楼层 |阅读模式
如果对本篇文章感兴趣,请前往,原文地址:http://www.apkbus.com/blog-982189-80098.html

### 一、LruCache概要LRU (Least Recently Used) 即最近最少使用算法。在Android开发中,LruCache是基于LRU算法实现的。当缓存空间使用完的情况下,最久没被使用的对象会被清除出缓存。LruCache常用的场景是做图片内存缓存,电商类APP经常会用到图片,当我们对图片资源做了内存缓存,不仅可以增强用户体验,而且可以减少图片网络请求,减少用户流量耗费。LruCache是一个内存层面的缓存,如果想要进行本地磁盘缓存,推荐使用DiskLruCache,虽然没包含在官方API中,但是官方推荐我们使用。### 二、使用方法LruCache的使用方法如下:```public class BitmapLruCache extends LruCache {    //设置缓存大小,建议当前应用可用最大内存的八分之一 即(int) (Runtime.getRuntime().maxMemory() / 1024 / 8)    public BitmapLruCache(int size) {        super(size);    }    //计算当前节点的内存大小 这个方法需要重写 不然返回1    @Override    protected int sizeOf(String key, Bitmap value) {        return value.getByteCount() / 1024;    }    //当节点移除时该方法会回调,可根据需求来决定是否重写该方法    @Override    protected void entryRemoved(boolean evicted, String key, Bitmap oldValue, BitmapnewValue) {        super.entryRemoved(evicted, key, oldValue, newValue);    }}```往缓存中放一张图片:```mLruCache.put(name, bitmap);```获取一张图片:```mLruCache.get(name);```删除一张图片:```mLruCache.remove(name);```### 三、源码分析- 首先先看一下LruCache构造方法```    public LruCache(int maxSize) {        if (maxSize
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:1294855032@qq.com

扫一扫关注我们

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粤ICP备15117877号 )