基于Android RxCache使用方法详解

  

  

我为什么使用这个库?

  

事实上Android开发中缓存功能的实现选择有很多种,文件缓存,SP缓存,或者数据库缓存,当然还有一些简单的库/工具类,比如github上的这个:

  

【ASimpleCache】:一个简单的缓存为android和java

  

但是都不是很好用(虽然可能学习成本比较低,因为它使用起来相对简单),我可能需要很多的静态常量来作为关键存储缓存数据的价值,并设置缓存的有效期,这可能需要很多Java代码去实现,并且过程繁琐。

  

如果您使用的网络请求库是改造+ RxJava,那么我推荐使用RxCache,正如作者所说的:

        RxCache Android是一个被动的缓存库和Java将缓存需求转化为一个接口。   RxCache是一个用于Android和Java的响应式缓存库,它可将您的缓存需求转换为一个接口。   之前      

<强>为什么写这样一篇文章

  

  

这本身无可厚非,作为一个开发者,英语文档的阅读是不可避免的一项技能,但是笔者还是抽了一点时间将官方文档做了汉化:

  

RxCache官方文档中文翻译

  

RxCache库官方链接

  

文档的翻译比想象中的费力(每一个词都试图翻译准确),但数小时的努力之后,译文的描述依然对于初次接触该库的开发者有着不小的学习难度,干脆自己写一个演示,并放到github上,供大家参考。

  

【Github】本文演示源码,点击进入

  

  

在您的build.gradle(项目)中添加JitPack仓库:

        allprojects {   存储库{   jcenter ()   maven {url https://jitpack。io”}   }   }      

将下列的依赖添加到模块的build.gradle中:

        依赖关系{   编译”com.github.VictorAlbertos.RxCache:运行时:1.8.1-2.x”   编译”io.reactivex.rxjava2: rxjava: 2.0.6”//我们再添加这个依赖,下面有说明   编译“com.github.VictorAlbertos.Jolyglot: gson: 0.0.3”   }      

因为RxCache在内部使用Jolyglot对对象进行序列化和反序列化,您需要选择下列的依赖中选择一个进行添加:

        依赖关系{//使用Gson   编译“com.github.VictorAlbertos.Jolyglot: gson: 0.0.3”//使用杰克逊   编译“com.github.VictorAlbertos.Jolyglot:杰克逊:0.0.3”//使用苎麻   编译“com.github.VictorAlbertos.Jolyglot:苎麻:0.0.3”   }   之前      

  

我们假设这样一个需求,通过传入用户名,返回用户对应信息,比如:

  

<强>改造API接口

        公共接口GitHubService {   @ get(“用户/{user}”)   ObservablegetRxUser @ path(“用户”)字符串(用户);   }   之前      

<强>该API请求的管理类ServiceManager

        公开课GitHubServiceManager {   私人GitHubService服务;   公共GitHubServiceManager () {   init ();   }   私人空间init () {   HttpLoggingInterceptor拦截=new HttpLoggingInterceptor ()   .setLevel (HttpLoggingInterceptor.Level.BODY);   OkHttpClient客户=new OkHttpClient ()   .newBuilder ()   .addInterceptor(拦截器)   .build ();   服务=new Retrofit.Builder ()   .baseUrl (“https://api.github.com/?   .addConverterFactory (GsonConverterFactory.create ())   .addCallAdapterFactory (RxJava2CallAdapterFactory.create ())   .client(客户端)   .build ()   共创(GitHubService.class);   }   公共ObservablegetUser (String用户){   返回service.getRxUser(用户);   }   }      

<强>用户数据类

     //@ data lombok插件的注解,自动生成,集方法   公开课用户{   公共字符串登录;   公共字符串名称;   }   之前      

<强>最后在我们的活动中获取数据:

        新的GitHubServiceManager ()   .getUser(用户名)   .subscribeOn (Schedulers.io ())   .observeOn (AndroidSchedulers.mainThread ())   .subscribe (user1→吐司。Toast.LENGTH_SHORT makeText(这,user1.toString()),告诉());      

好的,非常简单,接下来我们来配置缓存,我们默认需求:缓存有效期为1分钟。

  

  

<>强配置缓存接口

  

首先我们先配置供应商接口:

        公共接口UserCacheProviders {/* *   * LifeCache设置缓存过期时间。如果没有设置@LifeCache,数据将被永久缓存理除非你使用了EvictProvider, EvictDynamicKey或EvictDynamicKeyGroup。   * @param用户   * @param用户名驱逐与一个特定的键使用EvictDynamicKey相关的数据,比如分页,排序或筛选要求   * @param evictDynamicKey可以明确地清理指定的数据DynamicKey。   * @return   */@LifeCache(持续时间=1,timeUnit=TimeUnit.MINUTES)   Observable

基于Android RxCache使用方法详解