我为什么使用这个库?
事实上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使用方法详解