Android缓存之DiskLruCache磁盘缓存的使用-创新互联

DiskLruCache和LruCache不同的是,LruCache是内存缓存,而DiskLruCache是指磁盘缓存,顾名思义就是把文件缓存到磁盘,也也就是手机的内存卡中。接下来先简单介绍DiskLruCache的使用方法。

成都创新互联公司网站建设公司,提供网站设计、成都网站建设,网页设计,建网站,PHP网站建设等专业做网站服务;可快速的进行网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,是专业的做网站团队,希望更多企业前来合作!

下载源码


DiskLruCache并没有在 SDK中存在,但又是谷歌提倡的。所以我们要先把DiskLruCache的源码下载下来。
我们可以通过下面这个地址下载源码:https://github.com/JakeWharton/DiskLruCache/tree/master/src/main/java/com/jakewharton/disklrucache


然后把源码中的三个类拷贝到工程中。

DiskLruCache常用方法:

方法 备注
DiskLruCache open(File directory, int appVersion, int valueCount, long maxSize) 打开一个缓存目录,如果没有则首先创建它,directory:指定数据缓存地址 appVersion:APP版本号,当版本号改变时,缓存数据会被清除 valueCount:同一个key可以对应多少文件 maxSize:大可以缓存的数据量
Editor edit(String key) 通过key可以获得一个DiskLruCache.Editor,通过Editor可以得到一个输出流,进而缓存到本地存储上
void flush() 强制缓冲文件保存到文件系统
Snapshot get(String key) 通过key值来获得一个Snapshot,如果Snapshot存在,则移动到LRU队列的头部来,通过Snapshot可以得到一个输入流InputStream
long size() 缓存数据的大小,单位是byte
boolean remove(String key) 根据key值来删除对应的数据,如果该数据正在被编辑,则不能删除
void delete() 关闭缓存并且删除目录下所有的缓存数据,即使有的数据不是由DiskLruCache 缓存到本目录的
void close() 关闭DiskLruCache,缓存数据会保留在外存中
boolean isClosed() 判断DiskLruCache是否关闭,返回true表示已关闭
File getDirectory() 缓存数据的目录

初始化缓存对象


接下来具体介绍DiskLruCache的简单方法。首先我们在使用某个类的时候,一般都是首先找到它的构造方法,但是我们发现该类是final 类,无法被继承,并且构造方法是私有的方法,不能手动调用。

public final class DiskLruCache implements Closeable {

 private DiskLruCache(File directory, int appVersion, int valueCount, long maxSize) {
  this.directory = directory;
  this.appVersion = appVersion;
  this.journalFile = new File(directory, JOURNAL_FILE);
  this.journalFileTmp = new File(directory, JOURNAL_FILE_TEMP);
  this.journalFileBackup = new File(directory, JOURNAL_FILE_BACKUP);
  this.valueCount = valueCount;
  this.maxSize = maxSize;
 }


分享标题:Android缓存之DiskLruCache磁盘缓存的使用-创新互联
网址分享:http://scyanting.com/article/djosho.html