我知道有几种在 Android 应用程序中保存数据的方法,但我想知道什么是最简单和/或最有效的,或者换句话说,哪种方法会在复杂性/合理性方面胜出/表现。
基本上我只有两个类ArrayList(类对象的ArrayList,而不是原始数据类型)。一个 ArrayList 对象的构造函数采用三个整数,其他四个。我基本上需要存储这些整数的值(我为每个设置都有方法,以字符串或整数的形式返回整数),并以一种方式告诉每个整数属于什么。
例如,如果我有: arrayListOne.get(1).getNumbers() 返回 1, 2, 3 arrayListTwo.get(1).getNumbers() 返回 1, 2, 3, 4
以及一整堆会返回不同数字的其他索引,我如何存储这些数据,以便当应用程序关闭并重新启动时,它会重新加载,并且值与它们初始化时的索引保持一致?
最佳答案
将其写入内部存储是一种解决方案。您可以在 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 {
....
....
}
关于java - android应用程序存储ArrayList内容的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18369166/