4

私は現在Environment.getExternalStorageDirectory()、一時的にデータを保存できる場所を取得するために使用していますが、使用後に削除されます。このデータの範囲は1〜100MBです。

これは正常に機能しますが、場合によっては、外部ストレージの状態が削除されたり、マウント解除されたりします...データを保存するためにアクセスできません...

私の質問は、このストレージが利用できない場合の優れたフォールバックソリューションは何でしょうか?

私はターゲットを絞っAndroid 1.6ています。

4

1 に答える 1

3

直接返されるパスを使用しないでください。Environment.getExternalStorageDirectory()

ユーザーのルート名前空間の汚染を避けるために、アプリケーションはこの最上位ディレクトリを直接使用しないでください。アプリケーション専用のファイルはすべて、 によって返されたディレクトリに配置する必要があり Context.getExternalFilesDirます。アプリケーションがアンインストールされると、このディレクトリはシステムによって削除されます。その他の共有ファイルは、 によって返されるディレクトリの 1 つに配置する必要があります getExternalStoragePublicDirectory(String)

によって返されたパスを使用しgetFilesDir()て、アプリ専用のファイルを内部ストレージに保存するかgetExternalFilesDir()外部ストレージに保存します。

データを一時的に保存する場合は、キャッシュ ディレクトリの使用を検討してください。

これらのファイルは、デバイスのストレージが不足したときに最初に削除されるファイルになります。

メソッドを使用します:getCacheDir()またはgetExternalCacheDir()外部ファイルシステムで。それらの重要な違いについては、ドキュメントを参照してください。

保存するデータのサイズが大きくない場合は、内部ストレージを使用した方がよいでしょう。それ以外の場合は、外部ストレージが利用可能かどうかを検出し、そうでない場合は内部ストレージにフォールバックする複雑さを管理する必要があります。

于 2012-07-13T04:51:15.133 に答える