我正在使用Retorfit
+建立网络RxJava2
,我想将响应缓存 30 秒。在 30 秒间隔后进行的任何调用都应从服务器获取最新结果。我尝试使用运营商执行此Replay
操作,但每次我调用订阅时它仍然会进行网络调用。我不是 RxJava 方面的专家,所以我对使用Replay
缓存的理解可能是错误的。
public Observable<Name> getName() {
return retrofitBuilder.getName()
.subscribeOn(Schedulers.io())
.replay(30, TimeUnit.SECONDS,Schedulers.io())
.autoConnect();
}
我这样调用上面的代码:
service.getName()
.subscribe(new Consumer<Name>()
{
@Override
public void accept(Name name) throws Exception
{
Log.d("getName", "Name: " + name.toString());
}
}
, new Consumer<Throwable>()
{
@Override
public void accept(Throwable throwable) throws Exception
{
Log.d("getName", throwable.getMessage());
}
});
更新:如果我没有清楚地解释我的问题,我深表歉意。我想要的是在特定请求上缓存,而不是在HttpClient
将缓存策略应用于通过它发出的所有请求的级别上缓存它。最后,我想在需要时为不同的请求定义不同的缓存过期时间。并非我的所有请求都需要在短时间内缓存。我想知道我是否可以做到这一点。
感谢您在这方面的帮助。