DiskLruCache能够实现磁盘缓存,这里只写一下它的用法。
- DiskLruCache的创建:
DiskLruCache.open(File directory, int appVersion, int
valueCount, long maxSize)
方法能够创建一个DiskLruCachez对象,该方法有四个参数,第一个表示缓存的文件路径。第二个参数表示应用的版本号,当应用的版本号发生改变的时候,会清空内存中的所有的缓存。第三个参数表示单个节点对应的数据个数,一般设置为1。第四个参数表示缓存的大小。
- DiskLruCache添加缓存:
缓存添加需要借助DiskLruCache.Editor,DiskLruCache调用edit(String key)方法可以获得Editor对象,该方法加了同步锁,如果之前已经获得了该Editor,将返回null表示当前缓存正在被编辑。通过Editor我们可以获得文件输出流。
DiskLruCache.Editor editor = mDiskLruCache.edit(key);
OutputStream out = editor.newOutputStream(0);
由于我们设置的第三个参数为1,所以这里newOutputStream参数为0即可,可以查看下代码。最后要调用Editor的commit()方法或abort()方法,前者表示提交写入操作,后者表示取消回退操作。
- DiskLruCache获取缓存:
获取缓存需要借助DiskLruCache.Snapshot,调用DiskLruCache的get(String key)方法会得到一个Snapshot对象,该对象可以获得文件输入流。
DiskLruCache.Snapshot snapshot = mDiskLruCache.get(key);
FileInputStream fileInputStream = (FileInputStream)
snapshot.getInputStream(DISK_CACHE_INDEX);
上述过程也是DiskLruCache最常使用的3个过程了,记录一下。