33

私のアプリケーションは、インターネットからダウンロードされ、Android フォンでローカルにキャッシュされた非常に多くの写真を使用しています。これらの写真を保存する正しい方法は何だろうと思っています。私が見るいくつかの方法がありますが、それらは完全に満足できるものではありません。

それらを SD カードのパブリック フォルダーに保存します。

  • アンインストール時に解放されないスペースを使い果たします
  • ユーザーはギャラリーで写真を見ることができます
  • SDカードのルートにフォルダーが必要です(実際に電話を閲覧しているときに見ることができます)

非公開フォルダーのSDカードに保存します

  • アンインストール時に解放されないスペースを使い果たします
  • SDカードのスペースを密かに使用する

それらをアプリケーション内に保存します

  • アプリケーションのサイズが大きくなりすぎる

アプリケーションの画像をローカルに保存して、ユーザーの注意をそらさず、どこにもゴミを残さない正しい方法は何ですか?

4

5 に答える 5

31

最善の解決策は、次を使用することです。

context.getCacheDir()

このディレクトリはアプリケーション専用で、アンインストール時に削除されます。さらに、デバイスの容量が不足している場合、システムがこのディレクトリから削除できます。

ただし、ドキュメントには次のように記載されていることに注意してください。

システムがこれらのファイルを削除してくれることに頼るべきではありません。キャッシュ ファイルで消費するスペースの量には、常に 1 MB などの妥当な最大値を設定し、そのスペースを超えた場合はそれらのファイルを整理する必要があります。

多くの容量が必要で、むしろ SD カードを使用したい場合は、電話することができます

getExternalCacheDir()

代わりは。これらもアンインストール時に削除されますが、システムは外部ストレージで使用可能なスペースを監視しないため、スペースが少なくてもこれらのファイルは自動的に削除されません。このオプションを使用する場合は、外部ストレージが利用可能であることも確認する必要があります

Environment.getExternalStorageState()

書き込みを試みる前に。

于 2011-05-09T12:47:53.850 に答える
11

. _ _ _/sdcard/.donotscan/

更新: romainguy が twitter で言及して.nomediaいるように、これは、名前付きのファイルを dir に入れた場合にも機能します。

于 2010-02-25T12:49:15.557 に答える
6

データベースを利用するのが一番だと思います。

  1. アプリケーションとメモリを爆破しません。
  2. アプリケーションをアンインストールすると、関連するデータベースは削除されます。
  3. アプリケーション以外の誰もこのファイルにアクセスできません。

更新:しかし; データのみをキャッシュしたい場合は、webkit にキャッシュ マネージャーが定義されています。キャッシュマネージャー

以前はパッケージを使用したことがありませんでしたが、メソッドは簡単に使用できるようです。

static boolean   cacheDisabled()
static boolean   endCacheTransaction()
static CacheManager.CacheResult  getCacheFile(String url, Map<String, String> headers)
static File  getCacheFileBaseDir()
static void  saveCacheFile(String url, CacheManager.CacheResult cacheRet)
static boolean   startCacheTransaction()

Google Gearsコードで使用法を見つけることができます

これが役立つことを願っています。

于 2009-05-12T08:30:06.797 に答える
0

CacheManager を使用したくない場合は、データベースまたはローカル (非 SD) ファイル (ローカル ファイルは完全なアンインストールで削除されます) を使用し、'ACTION_DEVICE_STORAGE_LOW' および 'ACTION_DEVICE_STORAGE_OK' ブロードキャスト アクションを受け取るように登録します。次に、デバイスに応じて、アプリケーションがスペースを取りすぎている時期と、写真の削除を開始する必要がある時期を知ることができます。アプリケーションのサイズは拡大しますが、拡大と縮小を管理できます。

于 2009-05-17T02:17:45.703 に答える
-1

ヒント - SD カードに保存すると、MediaScanner によってスキャンされ、ユーザーのギャラリー (写真) に表示されますが、これはおそらく望ましくありません。
したがって、おそらくそれらを電話に保存するか、MediaScanner にそれらをスキャンしないように指示する必要があります (Google で簡単に検索した後では明らかに不可能です)。アンインストールしました。

于 2009-05-17T02:28:11.060 に答える