0

私の Android アプリケーションでは、OkHttp を使用してサーバーからの応答をキャッシュしています。そのために、次のようにコードを実装しました

     private class CacheInterceptor implements Interceptor {

        Context mContext;

        public CacheInterceptor(Context context) {
            this.mContext = context;
        }

        @Override
        public Response intercept(Chain chain) throws IOException {
            Request request = chain.request();
                request = request.newBuilder()
                        .header(HEADER_MOBILE_OS, Constants.MOBILE_OS)
                        .header(HEADER_APP_VERSION, BuildConfig.VERSION_NAME)
                        .build();
            Response response = chain.proceed(request);

            if (!mShouldUpdateCache) {
                response.newBuilder()
                        .header("Cache-Control", String.format("max-age=%d", CACHE_MAX_AGE)).build();
            } else {
//update cache in this case
                response.newBuilder()
                        .header("Cache-Control", "no-cache").build();
                mShouldUpdateCache = false;
            }
            return response;
        }
    }

これは私のインターセプタークラスであり、次のようにこれを OkClient に設定しています

okHttpClient.networkInterceptors().add(new CacheInterceptor(context));

    File httpCacheDirectory = new File(context.getCacheDir(), "response_cache");
    Cache cache = new Cache(httpCacheDirectory, CACHE_SIZE);

    if (cache != null) {
        okHttpClient.setCache(cache);
    }

しかし問題は、ブール値mShouldUpdateCacheが true になったときにキャッシュを更新する必要があることです。今書いresponse.newBuilder().header("Cache-Control", "no-cache").build();たのですが、キャッシュの更新もサーバーからの取得もしていません。この問題を解決するにはどうすればよいですか?

4

1 に答える 1

1
于 2015-11-18T13:48:10.067 に答える