2013-03-25 25 views
20

私は何回も尋ねられたこの質問をよく知っているので、部分的に回答が見つかりましたが、完全ではなく、アンドロイドのドキュメントは本当に助けになりません。明らかに私は彼らがどのように動作しているか知っていますが、これまで何度も共通の環境設定を使用していましたが、何点(どれくらい)が多すぎるのか不思議に思っています。長い話が短く - 誰かが実際に共有設定に保存されているデータが多すぎて問題を抱えていたのですが、問題は何か、データは削除されるのでしょうか?共有の設定 "制限"

これは好奇心のうち唯一の問題である。**、私はすでにSQL DBに保存されている私の大きな値は、単にいくつかの理由のために、誰かが共有好み

ですべてを保存した場合も問題があるならば可能となるか疑問に思っています
+0

私はそれらが何のために使われているのかを知っていますが、あまりに多く使用すると、何が問題になるのだろうと思っています。 –

+1

SharedPreferencesは主にいくつかのプリミティブデータ型を格納するために使用されており、私には限界があるとは思われません。あなたが本当に "Androidアプリケーションの最大保存データ量"を探す必要があることを知りたければ、SharedPreferencesの周りに答えを見つけることはできません – Droidman

+0

Maver1ck、Androidアプリケーションの悪い検索の最大保存データ量 –

答えて

35

SharedPreferencesはXMLファイルに格納されているため、SQLiteの強力なトランザクションサポートがないため、SharedPreferencesに "1​​00KBS"を格納することはお勧めしません。

私が知っている最も小さいサイズ制限は、SharedPreferencesがXMLファイルの内容全体をメモリに読み込むので、空きヒープスペースの量になります。

+7

ヒープサイズについて教えてください。しかし、私は今までxmlファイルが非常に大きいとは思っていません。なぜ彼らがバイナリファイル(またはjson)ではなく最初の場所にxmlであるのか疑問に思います。 –

+0

ちょっと#CommonsWare!あなたは約100kbのサイズの文字列を格納することは良い考えではありませんか? –

8

私はあなたがSharedPreferencesを使用すべきではないと思っています。なぜなら、(a)それらのデータはずっと少量のデータを保存することを意図しているため(XMLの使用)、(b) 。

SharedPreferencesについての「特別な」唯一のことは、ユーザーに環境設定を表示するための環境設定との統合です。これは、保存する予定の量に基づいてあなたのケースではおそらく適用されません。 (ああ、SharePreferencesも並行処理の問題を処理します。)

Javaのシリアル化を使用して、優先クラスをバイナリファイルに格納できます。これらは匹敵するPreferenceFileより劇的に小さくなり、簡単にGZIPInputStreamを通過させて暗号化するための小さな(またはCipherInputStream)にすることができます。この代替案は、SQLiteの機能が必要ないところにアプリデータを格納する強力でシンプルでクロスプラットフォームな方法であることが判明しました。

(申し訳ありませんが、これは直接の答えではありません。)

8

SharedPreferenceデータの制限があります。私の場合、SharedPreferenceデータが1428.51-kbになるとメモリ例外が発生します。

したがって、格納するために巨大なデータが必要な場合は、SQLiteデータベースを使用することをお勧めします。

+0

偽の声明。すべての質問にコピーと貼り付けをやめてください。間違っていて不正確であることが証明されています – SolidSnake

関連する問題