架构师学习--手写Glide之内存缓存

之前一篇文章带大家学习了活动缓存,本章将继续学习内存缓存。首先使用了LruCache算法(最近使用)缓存策略,什么是LruCache算法呢?这里对算法内部具体实现不做研究。先看一下android提供的源码:

一、LruCache

在这里插入图片描述
内部其实就是使用了LinkedHashMap的机制,设置为true,表示激活使用排序。使用排序的规则是如何呢?如下图:
在这里插入图片描述
总之一句话:只要集合中某个元素被使用了,它将会被放到集合的最顶端,也就是最不容易被回收的位置,其他的元素将重新排列。排在最末尾的是最容易被回收的。使用LruCache需要重写它的sizeOf()方法,计算对象需要的内存大小。

二、内存缓存类

1、sizeOf()

在这里插入图片描述
注意,4.4版本前后获取内存的大小是不一样的,两者的区别用一张图表示如下:

在这里插入图片描述

2、entryRemoved() 被动回收

为了能够实时监测被回收的缓存对象,需要重写该方法
在这里插入图片描述

3、主动回收

在这里插入图片描述
调用父类的remove()方法,然后还是会调用entryRemoved()方法,将移除的对象返回给调用者。

4、回调

在这里插入图片描述

get()和put()方法使用LruCache类提供的方法即可。该类的设计关键在于拿到被回收的对象以及计算对象的大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值