前面学习了活动缓存和内存缓存,本章将继续学习磁盘缓存,在内存缓存中我们使用了最少使用算法,并且android也提供了LruCache这个类供我们使用,同样的磁盘缓存也是使用了这个算法,但是遗憾的是android没有提供磁盘缓存的类。所以,我们不得不从github上下载大神的DiskLruCache文件了。下载地址,解压得到三个文件,添加到我们的项目中即可。
磁盘缓存类
1、初始磁盘缓存类DiskLruCache
在构造方法中做如下处理
使用open方法能够实例化DiskLruCache对象,第一个参数为磁盘缓存保存的文件路径,第二个参数为当前app的版本号,注意,只要这个版本号发生变动,之前的缓存将不能使用,第三个参数一般设置为1,第四个参数为磁盘缓存的大小,用户可以自定义。
2、put
存图片到磁盘缓存中
首先将图片bitmap以流的形式保存到outputStream中,这样我们就可以通过editor将流写入到本地磁盘中。最后不要忘记调用红色框框的两个方法。
3、get
从磁盘缓存中读取图片,并返回
通过snapshot获取图片的流,然后把流解析成bitmap,最后返回Value对象。
ok,完成以上配置,就完成了磁盘缓存的设计。