某宅的 Android 学习笔记(四)——用 DiskLruCache 实现本地缓存

本文介绍了Android应用中使用DiskLruCache实现本地缓存的原因和步骤,包括如何加入项目、创建实例以及如何获取和使用Editor与Snapshot。通过DiskLruCache,即使在离线情况下,应用也能提供良好的用户体验。
摘要由CSDN通过智能技术生成

为什么要用DiskLruCache?

 离线数据对于依赖网络加载数据的APP来说具有很重要的意义,当无网络或者是网络状况不好时,APP依然具备部分功能是一种很好的用户体验。假设网易新闻这类新闻客户端,数据完全存储在缓存中而不使用DiskLruCache技术存储,那么当客户端被销毁,缓存被释放,意味着再次打开APP将是一片空白。DiskLruCache是Google官方推荐的一套硬盘缓存的API,虽然Android中并没有包含她,但是能得到官方推荐,必然有着过人之处。

将DiskLruCache加入项目

 首先我们需要下载DiskLruCache的文件,github。不过如果用的是AndroidStudio的话,只需要在build.gradle中添加如下代码即可:

compile 'com.jakewharton:disklrucache:2.0.2'

 接着重新构建gradle文件就可以了。

使用DiskLruCache

1.创建DiskLruCache实例

 DiskLruCache是不能直接new的,如果要创建一个DiskLruCache的实例,需要调用它的open()方法。open()方法接收四个参数,第一个参数指定的是数据的缓存地址,第二个参数指定当前应用程序的版本号,第三个参数指定同一个key可以对应多少个缓存文件,基本都是传1,第四个参数指定最多可以缓存多少字节的数据。

 那么缓存地址如何获得呢?当然可以直接制定,但是为了用户体验考虑,不建议这么做。一般会放在/sdcard/Android/data//cache 下,因为选择在这个位置有两点好处:第一,这是存储在SD卡上的,因此即使缓存再多的数据也不会对手机的内置存储空间有任何影响,只要SD卡空间足够就行。第二,这个路径被Android系统认定为应用程序的缓存路径,当程序被卸载的时候,这里的数据也会一起被清除掉,这样就不会出现删除程序之后手机上还有很多残留数据的问题。

 但是考虑到不是所有的手机都一定会有SD卡,这里还是需要做一下判断。

/**
 * 获取缓存目录
 *
 * @param context
 * @param uniqueName 用于区分缓存内容
 * @return
 */
private File getDiskCacheDir(Context context, String uniqueName) {
    String cachePath;
    //判断 SD 卡是否存在,从而获取不同的缓存地址
    if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) ||
            !En
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值