先日公開した、RSSReaderでは、記事を表示するのに、テキストのみ表示のTextViewと、リンクされている画像も表示できる、WebViewの2種類を用意し設定で切り替え可能にしている。

WebViewの使用は、作り手としては、非常に便利ではあるが、いちいちネットワークアクセスにいくため、速度が遅い事、無用なパケットが発生するので2種類用意をした。

記事からリンクされている画像は、WebViewにより自動的に取得されるため、ローカルデータベースには格納しておらず、テキストのみを保存している。このためアプリケーションが持つデータサイズは、そんなに大きくならないはずだが、Home -> Setting からアプリケーション情報を見ると7Mにもなっていた。理由はWebViewが持つキャッシュ、このキャッシュは、ブラウザアプリケーションとは共有されず、各アプリケーションのディレクトリに作成される。
従って、なんらかの方法でキャッシュをクリアする必要がある。


jp.co.taosoftware.android.rssreader/cache
キャッシュの実体
jp.co.taosoftware.android.rssreader/databases
webview.db
webviewCache.db

webview.dbは、formdata httpauth coolies formurl password 等のテーブルを含む
webViewCache.dbは、ページキャッシュ用DBでその実態は、cacheディレクトリに存在する。

キャッシュのクリアは、以下のコードで行う


Context context = getContext();
WebView view = new WebView(context);
view.clearCache(true);
view.clearFormData();
view.clearHistory();
CookieManager.getInstance().removeAllCookie();

ブログ内の関連する記事