Android-UIL-cache

Cache pkg

cache包目录

disk cache

1.DiskCache.java

该接口是本地内存操作的提取,因为涉及到缓存设计的不同算法(在iml中有具体使用)

naming

1.FileNameGenerator.java

该类是一个interface(主要是用来解耦) 本地缓存时方便给image file命名

2.HashCodeFileNameGenerator.java

实现了FileNameGenerator,通过本地缓存file name以image uri hashcode命名

3.Md5FileNameGenerator

同样实现了FileNameGenerator,通过image uri的MD5给文件命名;

1-1

这里用到了BigInteger.toString(RADIX)

这里的RADIX是36进制的,这种命名既可以保证唯一,文件名又短。

可以看出以上这三个类的设计是一个策略模式

impl

1.BaseDiskCache.java

实现了DiskCache,是一个模版类(模版方法模式)

注意:reserveCacheDir是本地缓存的一个预留目录,当cacheDir不可用时使用reserveCacheDir;

2.UnlimitedDiskCache.java

本地缓存的默认实现,就像类名说的那样,没有限制本地缓存空间大小。

3.LimitedAgeDiskCache.java

具有有效期的本地缓存;

1-2

key:loadingDates存储了文件的缓存日期。

ext

1.Util.java

垃圾抽屉工具类

2.DiskLruCache.java

封装了LRU本地缓存的核心实现。

本地文件的key,size,等信息作者是采用文件记录的方式实现的;

记录中图片文件的state-specific values

DIRTY 创建一个图片文件

CLEAN 图片文件缓存成功,带读取

READ 读取图片文件

REMOVE 删除图片文件

每次对图片文件进行操作,state改变都会做记录

3.LruDiskCache.java

LRU实现的本地缓存,实现了DiskCache;

memory cache

1.MemoryCache.java

声明内存缓存调用接口

2.BaseMemoryCache.java

是一个模版类,实现MemoryCache了接口

1-3

这里bitmap被封装在Reference(内存不足时回收),避免OOM。

3.LimitedMemoryCache.java

extends BaseMemoryCache模版类,可以制定内存缓存的大小;

1-4

每次put的时候和cacheSize(AtomicInteger类型,保证计算操作线程安全)进行比较,超出sizeLimit,从hardCache中移除;

4.FIFOLimitedMemoryCache.java

FIFO算法实现内存缓存

1-5

当put的时候超出sizeLimit,采用先进先出策略移除。

5.FuzzyKeyMemoryCache.java

implements MemoryCache,装饰模式。

该类的实现给图片缓存算法增加了一个特别的功能,当图片key在缓存中已经存在,可以替换;

1-6

6.LargestLimitedMemoryCache.java

模版方法模式,extends LimitedMemoryCache。当超出sizeLimit,移除缓存中尺寸最大的图片。

1-7

7.LimitedAgeMemoryCache.java

装饰模式;实现了特色功能,给缓存中的图片指定了有效期。当图片存在缓存中的时间大于maxAge,直接移除。

1-8

8.LRULimitedMemoryCache.java

模版模式,LRU算法实现的图片缓存。当超出maxSize,移除最长时间没有使用的图片对象。


1-9

注意:这里作者LRU使用LinkHashMap实现,accessOrder = true;

考虑到侧重点是在空间上的使用,加载因子LOAD_FACTOR = 1.1f,而不是0.75f。

2-1

9.LruMemoryCache.java

策略模式,单纯的LRU缓存,不依赖Reference

10.UsingFreqLimitedMemoryCache.java

模版模式,简单来说LFU缓存,超出sizeLimit,移除最近使用次数最少的图片对象。


2-2

11.WeakMemoryCache.java

策略模式,extends BaseMemoryCache。

弱引用实现的图片缓存,图片对象依赖gc回收。

2-3

你可能感兴趣的:(Android-UIL-cache)