给出一个像这样的通用Retrofit2 Rxjava调用:
mMbtaApi.getFullAlerts(ApiConfig.MBTA_API_KEY)
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation())
.subscribe(alerts -> {
mAlerts = alerts;
mAlertListSubject.onNext(getFilteredAlerts());
mLoadSubscription.unsubscribe();
},
err -> {
mAlertListSubject.onError(err);
mLoadSubscription.unsubscribe();
});
你如何重新执行它? 我认为这样的事情会这样做(单独订阅应该这样做,但我添加了取消订阅以防万一):
alerts = mMbtaApi.getFullAlerts(ApiConfig.MBTA_API_KEY)
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation())
alerts.unsubscribe(handler)
alerts.subscribe(handler)
但是当我进行第二次订阅时,我没有看到任何网络流量消失。 警报HTTP返回标头指示不应缓存数据:
Cache-Control no-cache
Pragma no-cache
Content-Type application/json; charset=utf-8
Expires -1
所以它肯定不是okhttp缓存数据。
答案 0 :(得分:0)
发现问题。我是这样创建okhttpclient的:
final OkHttpClient.Builder builder = new OkHttpClient.Builder();
return builder.cache(new Cache(context.getCacheDir(), cacheSize)).build()
取出.cache()现在让它通过网络。不知道为什么高速缓存忽略了http标头中的“no-cache”指令,但似乎错了: - (