2017-01-20 13 views
1

現在、キャッシュ内にビットマップイメージを格納しています。各ビットマップのサイズはそれぞれ3MBまでです。私はアンドロイドのマニュアルを読んだ後、私はこれを見つけた、しかしgetCacheDir()を使用しています:セルフモニタのキャッシュディレクトリ

注:あなたがあなたのためにこれらのファイルを削除するシステムに依存しないでください。キャッシュファイルで消費する領域の量には、常に1MBなどの妥当な最大値を設定し、その領域を超えた場合にはそれらのファイルをプルーニングする必要があります。

だから私はgetExternalCacheDir()を使用して、私のキャッシュを切り替える検討していますが、私はこのことについてabitは不確かだ:

プラットフォームは常に共有ストレージの空き容量を監視しませんので、自動的に削除されないことがありこれらのファイル。アプリは常にこの場所で使用される最大スペースを管理する必要があります。現在のところ、プラットフォームによって削除されるのは、JELLY_BEAN_MR1以降で実行され、isExternalStorageEmulated(File)がtrueを返すときだけです。

ファイルがランダムに削除されると、実際にアプリケーションの実行に影響する可能性があるので、私はキャッシュディレクトリを完全に制御したいと考えています。私はすでにキャッシュのサイズの上限を設定しているので、ある程度のスペースを超えることはありません。どうすればシステムがこのキャッシュから監視したり削除したりするのを防ぐことができますか?

おかげ

答えて

0

は、キャッシュが永続的なストレージであると考えてはいけません。あなたが依存しているファイルは保存してはいけません。再ロードまたは再作成したくないデータを格納するために使用されるキャッシュですが、必要に応じて実行することができます(Webから画像をロードする場合と同じように、ディスクからロードする方が早い場合は実行しますが、 。このファイルに本当に依存している場合は、getFilesDir()を使用すると、特定のアプリケーションディレクトリにルーティングされます。メモリがない場合は消去されません(しかし、設定ではユーザが消去できます)。また、静的なデータがあり、常に必要な場合は、そのデータを資産フォルダに保存し、他のすべてのデータを一時的なものとみなして(ユーザーまたはシステムが消去できるときはいつでも)、存在をチェックする必要があります。

+0

2つの質問1)getFilesDir()を使用してここに画像を保存すると、メディアフォルダとしてユーザーに表示される可能性がありますか? (私はしたくない)。 2)この資産フォルダに関する詳細を教えてください。 – memoryManagers

+0

1)getFilesDirに格納されているファイルは、ユーザーには表示されません(rootアクセス権がない限り)。ユーザーは簡単に削除することはできません。しかし、ファイルをユーザーに見せたい場合は、getExternalStorageDir()が必要です。ユーザーに表示され、簡単に削除できます。 – Ekalips

+0

2)アセットフォルダは、常にアプリケーションを持つファイルを格納するために使用されます。彼らはすでにapkファイルで来るでしょう。ユーザーはとにかくそれを削除することはできません。しかし、1つの欠点 - あなたは動的にファイルを配置することはできません、apkのビルドの前にのみ – Ekalips

関連する問題