2011-09-24 7 views
16

WebViewが/ data/data/???/cache/webViewCacheのデータをキャッシュするのを防ぐことはできますか?私はWebSettings上で次のように設定しましたが、キャッシュフォルダがまだ使用されている:Android WebViewキャッシングデータを防止する

webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); 
webSettings.setAppCacheEnabled(false); 

私は、キャッシュファイルは、アプリケーションの終了時に削除されることに気付きましたか、アプリケーションがバックグラウンドに入るときには、私は好みますそれらがまったく作成されないようにします。さらに、/ data/data/???/databaseにあるwebview.db & webviewCache.dbの使用を防止したいと思います。私は現在、それほどのようなデータベースを削除します。

context.deleteDatabase("webview.db"); 
context.deleteDatabase("webviewCache.db"); 

これは、所望の効果を持つように表示され、ファイルが使用するため、再び再作成する表示されません。これが当てはまると想定するのは安全でしょうか?

+0

キャッシングを防ぐ運がありましたか? – omega

+0

私は恐れていません。 – dbotha

答えて

40

このページのノートは、彼らはあなたがキャッシュへの細かいアクセス権を持ってしたくないと信じて私をリード:

http://developer.android.com/reference/android/webkit/CacheManager.html

私の知る限り、(少なくとも)がある2キャッシュを保持する方法。私はアプリでこれを書いていないので、保証はありません:

(1)WebViewがページを終了するたびに、キャッシュをクリアしてください。あなたのWebViewClientでこのような何か:

@Override 
public void onPageFinished(WebView view, String url) { 
    super.onPageFinished(view, url); 
    view.clearCache(true); 
} 

あなたが保存されているものが多すぎる気が、ちょうど最新のコンテンツをしたくない場合は(2)、あなたが右のHTTPヘッダを設定することによって、これを達成することができるかもしれませんloadUrl(あなたのサーバーに対してこれをテストしたいと思います)。また、これはたぶん、あなたはこれを試してみましたが、多分にも小さなものにWebViewのキャッシュサイズを設定し8+

Map<String, String> noCacheHeaders = new HashMap<String, String>(2); 
    noCacheHeaders.put("Pragma", "no-cache"); 
    noCacheHeaders.put("Cache-Control", "no-cache"); 
    view.loadUrl(url, noCacheHeaders); 

のAndroid APIでのみ使用可能です。 0が動作するかわからないので、おそらく1:

wv.getSettings().setAppCacheMaxSize(1); 

幸運!

+0

私は単純に 'webView.clearCache(true)'と呼んでそれをクリアし、 'webView.loadData()'をリロードしました。新しいものを再ロードせずには動作しないようです。 – Nevermore

+0

wv.getSettings()。setAppCacheMaxSize(1);推奨されていません! – GeneralKimi

12

私のアプリケーション(Android 4.2.2)では、実行時に変更できる画像をWebページに読み込みます(パスを維持しながら画像を置き換えます)。マットのソリューション(1)

@Override 
public void onPageFinished(WebView view, String url) { 
    super.onPageFinished(view, url); 
    view.clearCache(true); 
} 

私のために、ソリューション(2)いいえ! 乾杯。

+0

おかげさまで、どのソリューションが最も効果的か分かりました。 – Matt