0

Androidアプリケーションにデータを保存する方法がいくつかあることは知っていますが、最も単純で/または最も効果的な方法、つまり、複雑さ/合理性/パフォーマンスのスケールでどの方法が勝つか疑問に思っています.

基本的に、2 つの Class ArrayLists (プリミティブ データ型ではなく、クラス オブジェクトの ArrayLists) しかありません。1 つの ArrayList のオブジェクトのコンストラクターは 3 つの整数を取り、残りの 4 つを取ります。基本的に、これらの整数の値を格納する必要があります (整数を文字列または整数として返すように設定された各メソッドがあります)。

たとえば、次の場合: arrayListOne.get(1).getNumbers() 1、2、3 を返す arrayListTwo.get(1).getNumbers() 1、2、3、4 を返す

異なる数値を返す他のインデックスのヒープ全体、そのデータを保存して、アプリを閉じて再起動したときにリロードされ、値が初期化されたインデックスに忠実なままになるようにするにはどうすればよいですか?

4

2 に答える 2

1

内部ストレージに書き込むことが 1 つの解決策です。Util クラス内で静的メソッドとして以下を使用できます。

ArrayList を取得します。

final static String OBJECT_1_LIST = "object_1_list";
static ArrayList<MyObject1> object1List = null;

static ArrayList<MyObject1> getObject1List(Context mContext) {
    FileInputStream stream = null;

    try {
        stream = mContext.openFileInput(OBJECT_1_LIST);
        ObjectInputStream din = new ObjectInputStream(stream);
        object1List = (ArrayList<MyObject1>) din.readObject();
        stream.getFD().sync();
        stream.close();
        din.close();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e1) {
        e1.printStackTrace();
    }

    if (object1List == null) {
        object1List = new ArrayList<MyObject1>();
    }

    return object1List;
}

同様に、ArrayList を更新するには:

private static void updateObject1List(Context mContext) {
    FileOutputStream stream = null;

    try {
        stream = mContext.openFileOutput(OBJECT_1_LIST,
                Context.MODE_PRIVATE);
        ObjectOutputStream dout = new ObjectOutputStream(stream);
        dout.writeObject(object1List);
        stream.getFD().sync();
        stream.close();
        dout.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

アイテムを追加するには:

static void addToObject1list(Context mContext, MyObject1 obj) {
    Utilities.getObject1List(mContext).add(obj);
    Utilities.updateObject1List(mContext);
}

項目を削除して ArrayList をクリアするメソッドを追加します。

MyObject1以下も実装する必要がありSerializableます。

public class MyObject1 implements Serializable {
    ....
    ....
}
于 2013-08-21T23:34:58.887 に答える