Android OKHTTP 设置缓存 断网使用

OKHTTP 设置 GET 请求网络缓存、缓存时间以及断网情况下的使用

  • 基于 okhttp 3.9.1 测试

1. 设置本地本地缓存的路径、大小

public CacheResponse() {
    int cacheSize = 10 * 1024 * 1024;     // 10 MiB
    final String CACHE_PATH
            = Environment.getExternalStorageDirectory().getAbsolutePath()
            + "/okcache";
    File cacheDirectory = new File(CACHE_PATH);
    Cache cache = new Cache(cacheDirectory, cacheSize);
    client = new OkHttpClient.Builder()
            .cache(cache)
            .build();
}

2. cacheControl 设置缓存的最大时间

public void run() {
    Request request = new Request.Builder()
            .cacheControl(new CacheControl.Builder().maxStale(60 * 5, TimeUnit.SECONDS).build())
            .url("http://publicobject.com/helloworld.txt")
            .build();

    client.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            Log.e(TAG, "onFailure = " + e.toString());
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {

            String responseBody = response.body().string();
            Log.e(TAG, " response = " + responseBody);
            Log.e(TAG, " cache response:    " + response.cacheResponse());
            Log.e(TAG, " network response:  " + response.networkResponse());
        }
    });
}

3. 测试结果如下:

1)第一次没有缓存:
这里写图片描述

2)第二次有缓存:
这里写图片描述

3)再断开手机网络:
这里写图片描述

4)在手机本地缓存的文件:
这里写图片描述

阅读更多

没有更多推荐了,返回首页