浅谈Android轻量级的数据缓存框架RxCache

  

请求网络数据是在安卓开发中使用最频繁的一个功能,网络请求的体验决定了用户对整个应用的感觉,因此合理地使用缓存对网络请求的数据进行处理极为重要。合理的进行缓存和网络请求,可以应用为带来更优秀的体验。图片的缓存有毕加索、滑翔、壁画等非常著名的框架,它们极为成熟并且使用广泛,程序员应该做的是使用轮子而非重复造轮子。但对于网络数据的缓存,大多都是自用自封装,每个人都需要进行繁琐的编码工作.RxCache就对网络缓存进行了封装,并采用RxJava模式,可以与其他RxJava的代码无缝对接,使用极为方便。

  

RxCache使用LruCache和DiskLruCache对网络请求数据进行二级缓存,主要适配于接口API返回数据,不用于图片等的缓存。可以设置缓存模式,缓存大小,设置数据过期时间,并提供了根据关键删除缓存和清空所有缓存的功能。提供了Gson方式和序列化方式进行数据存储转换与还原。

  

<强>项目GitHub地址

  

RxCache   

开始使用:

  

首先在项目的Gradle中添加依赖:

  

RxCache使用JitPack进行依赖管理,所以需要先在项目的build.gradle中添加以下代码:

        allprojects {   存储库{   …   maven {url ' https://jitpack.io '}   }   }      

然后在模块的gradle中添加以下依赖:

        编译的com.github.LtLei: RxCache: v1.0.0      

在你的应用程序中进行初始化:

        RxCache.init(这);//为RxCache提供上下文      

也可以使用Builder进行高级初始化:

        新的RxCache.Builder ()   .setDebug(真正的)//开启调试、开启后会打印缓存相关日志,默认为真实的   .setConverter(新GsonConverter())//设置转换方式,默认为Gson转换   .setCacheMode (CacheMode.BOTH)//设置缓存模式,默认为二级缓存   .setMemoryCacheSizeByMB(50)//设置内存缓存的大小,单位是MB   .setDiskCacheSizeByMB(100)//设置磁盘缓存的大小,单位是MB   .setDiskDirName (RxCache)//设置磁盘缓存的文件夹名称    .build ();      

<强>写入缓存

        RxCache.getInstance ()   .put(“测试”,“这是数据缓存”。10 * 1000)//关键:缓存的关键数据:具体的数据时间:缓存的有效时间   .compose (RxUtil灵活;Boolean> io_main())//线程调度   .subscribe(新的Consumer () {   @Override   公共空间接受(布尔aBoolean){抛出异常   如果aBoolean日志。d(“缓存”,“缓存成功!”);   }   },新的Consumer () {   @Override   公共空间接受(Throwable Throwable){抛出异常   throwable.printStackTrace ();   }   });      

<强>读取缓存

  

读取缓存时,分为以下几种情况:

  

若为Gson转换时:

  

读取基本类型数据,或自定义的javabean数据,或数组数据等一切可以获取. class的数据

        RxCache.getInstance ()   . get(“测试”,假,String.class)//关键:缓存的关键更新:表示从缓存获取数据强行返回零   .compose (RxUtil灵活;CacheResponse< String>祝辞io_main ())   .subscribe(新Consumer{stringCacheResponse)抛出异常   如果(stringCacheResponse.getData () !=null)   日志。d(“从缓存数据:“+ stringCacheResponse.getData ());   }   },新的Consumer () {   @Override   公共空间接受(Throwable Throwable){抛出异常   throwable.printStackTrace ();   }   });   之前      

读取列表等无法获取. class的数据,以上基本数据也可以使用此方式

        型类型=new TypeToken祝辞(“测试”,错误类型)//由于类型不是类,需要指定泛型   .compose (RxUtil灵活;CacheResponse< List在祝辞io_main ())   .subscribe(新Consumer在祝辞(){   @Override   公共空间接受(CacheResponse比;{listCacheResponse)抛出异常   如果(listCacheResponse.getData () !=null)   日志。d(“从缓存数据:“+ listCacheResponse.getData () .toString ());   }   },新的Consumer () {   @Override   公共空间接受(Throwable Throwable){抛出异常   throwable.printStackTrace ();   }   });   

浅谈Android轻量级的数据缓存框架RxCache