只是爲了讓您知道這個答案是使用Retrofit 2測試版。爲了這個答案的目的沒有太大的區別。
我假設你有這樣的東西來獲得改造客戶端。
private static Retrofit.Builder builder =
new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(new ErrorHandlingCallbackAdapter.ErrorHandlingCallAdapterFactory());
我希望你也有這樣的方法:
public static <S> S createCachedService(Context context, Class<S> serviceClass) {
Retrofit retrofit = builder.client(sOkHttpClient).build();
return retrofit.create(serviceClass);
}
但你應該有這些方法2。一個增加了okhttp客戶端,另一個沒有。
public static <S> S createService(Context context, Class<S> serviceClass) {
Retrofit retrofit = builder.build();
return retrofit.create(serviceClass);
}
無論何時只需要使用緩存服務創建者進行緩存調用。
我的理解是,如果您希望對該端點的所有請求都跳過緩存,則還可以向端點添加@Header
註釋。 okhttp應該尊重你的Cache-Control頭。 類似於
public interface GitHubService {
@Headers("Cache-Control: no-cache")
@GET("https://stackoverflow.com/users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user);
}
快樂編碼。