2

内部メモリに保存する必要のある情報がいくつかあります。SharedPreferencesで行われるのと同じように、キーと値のペアの形式で保存したいと思います。JsonObjectを作成し、その方法で保存および取得することを考えていました。キーと値のペアの形式でデータを内部メモリに保存する他の方法はありますか?

4

2 に答える 2

1

オブジェクトデータを格納する標準のJavaの方法は、シリアル化を使用することです。これが目的です。ほとんどの場合、Serializableの実装はかなり簡単です。このサイトでは、Android環境に合わせて簡単に調整できる、シリアル化の基本に関する優れたチュートリアルを提供しています。

HashMapを作成することにより、HashMapをファイルにシリアル化して、キー/値形式のデータを簡単に取得できます。ほとんどすべてのライブラリコレクションはSerializableをサポートしているため、他のタイプのマップ/リストを保存することもできます。

では、どちらを使用するか-シリアル化またはJSONObject?これは、効率がどれほど重要で、保存したいものがどれほど複雑かによって異なります。

一般に、どちらの場合も最大のコストはデータをファイルに書き込む実際の動作です。したがって、JSONObjectsはほとんどの場合、より小さく単純になるため、少し速くなる可能性があります。これは、JSONに簡単に変換できる文字列または非常に単純なオブジェクトを格納するのに適しています。数十のメンバーと多くの可能な状態を持つ非常に複雑なクラスがある場合は、シリアル化を使用する方が簡単で効率的です。ほとんどの場合、これらのオプション間の実際のコストの違いはごくわずかであり、読み取りと書き込みを何度も実行する必要がある場合にのみ実際に問題になります。

したがって、基本型にはJSONを使用し、複合型にはシリアル化を使用します(シリアル化されたオブジェクトをJSONオブジェクトに格納することもできます)。

于 2011-09-02T05:18:54.930 に答える
0

非常に基本的なSQLiteDatabaseがその役割を果たします。そこにはたくさんのチュートリアルがあり、必要なのは_id、key、valueの3つの列を持つ単一のテーブルだけです。

私は個人的にこのチュートリアルが素晴らしい出発点であると感じました。

DBは常にボールを転がすためのコンテキストを必要とするため、このような単純なget / set状況では、次のメソッドシグネチャを使用して小さなクラスを作成すると、作業が非常に簡単になります。

public static void set(Context context, String key, String value);
public static String get(Context context, String key);

より複雑なオブジェクトの場合は、ParcelableまたはSerializationを使用します。

public static void set(Context context, String key, Serializable value);
public static Serializable(Context context, String key); 
于 2011-09-01T10:50:34.063 に答える