android DiskLruCache使用方法
2016-12-11 21:42
375 查看
DiskLruCache能够实现磁盘缓存,这里只写一下它的用法。
DiskLruCache的创建:
方法能够创建一个DiskLruCachez对象,该方法有四个参数,第一个表示缓存的文件路径。第二个参数表示应用的版本号,当应用的版本号发生改变的时候,会清空内存中的所有的缓存。第三个参数表示单个节点对应的数据个数,一般设置为1。第四个参数表示缓存的大小。
DiskLruCache添加缓存:
缓存添加需要借助DiskLruCache.Editor,DiskLruCache调用edit(String key)方法可以获得Editor对象,该方法加了同步锁,如果之前已经获得了该Editor,将返回null表示当前缓存正在被编辑。通过Editor我们可以获得文件输出流。
由于我们设置的第三个参数为1,所以这里newOutputStream参数为0即可,可以查看下代码。最后要调用Editor的commit()方法或abort()方法,前者表示提交写入操作,后者表示取消回退操作。
DiskLruCache获取缓存:
获取缓存需要借助DiskLruCache.Snapshot,调用DiskLruCache的get(String key)方法会得到一个Snapshot对象,该对象可以获得文件输入流。
上述过程也是DiskLruCache最常使用的3个过程了,记录一下。
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个过程了,记录一下。
相关文章推荐
- android studio 问题集
- 《Android群英传》---读书笔记5
- 巧用Snackbar代替Toast
- web文件下载和Android文件下载的区别小结
- Android创建桌面快捷方式
- Android10
- Android09
- Android studio编程时出现的错误:unspecified on project app resolves to an APK archive which is not supported
- 使用命令行编译和安装Android程序
- EasyClient android 编译arm64-v8a库遇到的坑
- android studio 快捷键
- Android ExceptionHandler
- Android中如何实现圆形按钮的颜色变化
- Android studio连接不上创建好的模拟器
- Android自定义View之View的绘制流程
- android复习路之tween动画篇
- Android学习笔记46:使用Post方式提交数据
- android LruCache使用
- Android设计模式之动态代理,实现方法拦截功能
- 第九期 基于模拟器的Helloworld JNI方法 《手机就是开发板》