androidwebviewクリーンキャッシュ



Android Webview Clean Cache



最近Androidプロジェクトを作成しましたが、webviewのキャッシュで問題が発生しました。プログラムに入るたびに、webviewはキャッシュを使用します。次に、この問題がどのように解決されるかについて話します。

まず、キャッシュの分類を理解します

ページを非表示:

Webページ、ページ、またはhtml、JS、CSSなどのリソースデータをロードする場合、これらのキャッシュされたリソースはブラウザの動作によって生成され、開発者は使用することしかできません。
これらのキャッシュされたデータに間接的に影響を与えるようにブラウザーの動作に影響を与えるようにHTTP応答ヘッダーを構成します。キャッシュされたインデックスは、/ data / data // databasesに配置されます。
対応するファイルは次の場所に配置されます:/ data / data / package_name / cache / webviewCacheChromunm



データキャッシュ:

AppCacheとDOMストレージの2つのタイプに分けられます
AppCache:
ページ、画像、スクリプト、CSSなど、Webブラウザのすべてを選択的にバッファリングできます。
Webサイトの複数のページに適用されるCSSファイルとJavaScriptファイルが含まれる場合に特に便利です。そのサイズは現在通常5Mです。
Androidでは、手動で有効にし(setAppCacheEnabled)、パス(setAppCachePath)と容量を設定する必要があります
(setAppCacheMaxSize)、AndroidはApplicationCache.dbを使用してAppCacheデータを保存します!
DOMストレージ:
キーと値のペアで解決できるいくつかの単純なデータを格納します。アクションの範囲に応じて、セッションストレージとローカルストレージの2種類があり、セッションレベルのストレージ(ページを閉じると消えます)とローカライズされたストレージ(アクティブに削除しない限りデータが期限切れになることはありません)に使用されます。 DOMStorage(setDomStorageEnabled)はAndroidで手動でオンにでき、Android Webkitのストレージパス(setDatabasePath)はDOMStorage(my_path / localstorage)/http_blog.csdn.net_0.localstorageとmy_path / Databases.db)の2つのファイルを生成します。

画像
私たちの実際の開発には他の状況があります。



キャッシュの消去

私は多くのブログを読み、多くの方法を試しましたが成功しませんでした。ナンセンスな話をしないで、コードを見てください

public void deleteFile(File file) { if (file.exists()) { if (file.isFile()) { file.delete() } else if (file.isDirectory()) { File files[] = file.listFiles() for (int i = 0 i file.delete() } else { System.out.println('delete file no exists ') } }

deleteFileメソッドを呼び出します

File webviewCacheDir = new File(getActivity().getCacheDir().getParent()) //Cache path //Delete webview cache directory if(webviewCacheDir.exists()){ deleteFile(webviewCacheDir) } android.os.Process.killProcess(android.os.Process.myPid())

注意: android.os.Process.killProcess(android.os.Process.myPid())
このコードはプログラムを強制終了するためのものです。なぜこのコードを追加するのですか?その理由は、ローカルストレージキャッシュをクリアしたい場合、キャッシュファイルをクリアするだけでは不十分だからです。プロセスを強制終了する必要があります。
私はあなたの開発を手伝いたいと思っています