将网页保存在缓存中以加载到webview中

时间:2016-08-20 08:38:38

标签: android caching webview android-webview

我正在尝试使用okhttp在缓存中保存一些网页(不是来自同一网站)。我的想法是在缓存中保存大约20-30个网页(此任务将由IntentService执行)然后,一旦用户请求查看网页,应用程序应检查它是否在缓存中(网页将是如果不是在缓存当然从互联网加载)。

使用okhttp下载html非常简单,但现在我想知道如何保存CSS以及webviewclient如何从缓存中加载页面。

在我的服务中,我编写了以下代码:

ArrayList<String> urls = intent.getStringArrayListExtra(MyFragment.RESULTS_LIST);

    File cacheDir = new File(getCacheDir().getPath());
    int cacheSize = 10 * 1024 * 1024; // 10 MiB
    Cache cache = new Cache(cacheDir, cacheSize);

    OkHttpClient client = new OkHttpClient.Builder()
            .cache(cache)
            .readTimeout(20, TimeUnit.SECONDS)
            .connectTimeout(10, TimeUnit.SECONDS)
            .writeTimeout(20, TimeUnit.SECONDS)
            .build();

    for (String url : urls) {
        Request request = new Request.Builder()
                .url(url)
                .build();

        client.newCall(request).enqueue(new Callback() {

            @Override
            public void onFailure(Call call, IOException e) {
                Log.e(TAG, e.toString());
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response.isSuccessful()) {
                    String output = response.body().string();

                    Log.d(TAG, output);
                } else {
                    Log.e(TAG, "Error");
                }

                response.body().close();
            }
        });
    }
}

我可以在调试中看到填充了Cache对象,但是我无法检查我的设备是否实际写入了缓存,所以我不知道WebView是否试图从缓存中读取。

0 个答案:

没有答案