2016-07-02 11 views
0

Учитывая несколько родовое Retrofit2 Rxjava вызов, как это:перезапустив 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

Обнаружили проблему. Я создавал okhttpclient так:

final OkHttpClient.Builder builder = new OkHttpClient.Builder(); 
return builder.cache(new Cache(context.getCacheDir(), cacheSize)).build() 

Достав .cache() теперь делает его идти по сети. Не уверен, почему кеш игнорирует директивы «no-cache» в заголовках http, хотя ... кажется неправильным :-(

Смежные вопросы