0

我知道有几种方法可以在 android 应用程序中保存数据,但我想知道什么是最简单和/或最有效的方法,或者换句话说,哪种方法会在复杂性/合理性/性能的范围内胜出。

基本上我只有两个类 ArrayLists(类对象的 ArrayLists,而不是原始数据类型)。一个 ArrayList 对象的构造函数采用三个整数,另外四个。我基本上需要存储这些整数的值(我有每个设置的方法以将整数作为字符串或整数返回),并以一种方式告诉每个整数属于什么。

例如,如果我有: arrayListOne.get(1).getNumbers() 返回 1, 2, 3 arrayListTwo.get(1).getNumbers() 返回 1, 2, 3, 4

以及一大堆将返回不同数字的其他索引,我如何存储这些数据,以便在应用程序关闭并重新启动时重新加载它并且值保持对它们初始化的索引的真实性?

4

2 回答 2

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 回答
0

我发现将对象保存为 JSON 字符串非常简单有效。查看 GSON 库。它将从 JSON 转换为 java 并将 java 转换回 JSON,几乎没有任何摆弄。

https://code.google.com/p/google-gson/

我喜欢 GSON 做这件事。

于 2013-08-21T23:23:26.187 回答