一旦来自缓存,便无法再次从网络获取数据

时间:2018-12-31 07:37:59

标签: android caching retrofit

我正在尝试缓存我的网络请求数据。我已指定其最大年龄= 60。数据应来自缓存,直到60秒。但是问题是我每次都从缓存中获取数据,而无法再次发送网络请求。我希望数据应在时间过期(即60秒)后来自网络。下面是我的代码,我正在使用翻新技术来缓存请求:

  OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .cache(new Cache(MyApp.getInstance().getCacheDir(), 5 * 1024 * 1024))
            .addInterceptor(new Interceptor() {
                @Override
                public okhttp3.Response intercept(Chain chain) throws IOException {
                    Request request = chain.request();
                    if (hasNetwork(MyApp.getInstance()))
                        request = request.newBuilder().header("Cache-Control", "public, max-age=" + 60).build();
                    else
                        request = request.newBuilder().header("Cache-Control", "public, only-if-cached, max-stale=" + 60 * 60 * 24 * 7).build();
                    return chain.proceed(request);
                }
            })
            .build();

    Retrofit retrofit = new Retrofit.Builder()
            .addConverterFactory(GsonConverterFactory.create())
            .client(okHttpClient)
            .baseUrl("https://reqres.in")
            .build();

0 个答案:

没有答案