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)在手機本地緩存的文件:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章