登录 立即注册
安币:

安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户

查看: 110|回复: 0

Android LruCache源码分析

[复制链接]

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
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条

下载安卓巴士客户端

全国最大的安卓开发者社区

广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|下载客户端|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表