不使用SQLite在Android中持久存储数组的最佳方法

时间:2014-01-31 18:09:54

标签: java android json xml

我的android应用程序中有一个数组,我想在应用程序关闭时存储,然后在应用程序再次打开时恢复。我知道人们通常会在SQLite数据库中存储大量的数据。但我只有一些我想存储的数组。因此,我想知道最好的方法是什么。

Best对我来说意味着以下几点:

  • 表现良好

  • 简单,非复杂的代码

  • 能够存储多维数组和数组列表

以下是我提出的可能性:

  • JSON

  • XML

  • 元编程,您将数组存储在文本文件中,就像初始化它一样,然后使用元编程读取它。这并不容易,但在Java中可行。

虽然那当然不是一个详尽的清单。根据上述标准,用Java存储数组的最佳方法是什么?

我知道这不是典型的问答,但我认为因为我提供了明确的标准和示例,所以它并没有违反stackoverflow“问题规则”

2 个答案:

答案 0 :(得分:4)

Android中有4 basic methods个数据存储空间。

  1. Internal storage - 这基本上是一个私人文件夹,您可以在其中写入文件。你可以在那里写一个小文件,然后再读回来。
  2. External Storage - 与内部相同,但其他应用程序可以看到它。通常这是一张SD卡。这对于内部有限内存中不需要的大型数据集非常有用,并且您不介意共享(MP3,图像等)
  3. SQLite Database - 最适合表格类型格式的大型数据集。
  4. Shared Preferences-最适合少量数据,用于存储偏好值,可能是高分等。本机不存储数组,但您可以存储json字符串,如您所提到的那样。< / LI>

    为了存储一组高分,我使用了内部存储文件夹,它似乎对我的目的来说效果很好。选择方法后,您应该能够弄清楚如何正确地编写/获取数据。如果你不能,可以随意提出另一个问题来帮助解决这个问题。

答案 1 :(得分:0)

如果数组中的对象是 Serializable ,则可以将它们写入存储在SD卡上的文件中。这样您就不需要使用数据库了。像这样:

ObjectOutputStream dataOutputStream = new ObjectOutputStream(new FileOutputStream(myFile));
dataOutputStream.writeObject(myList);

然后检索数组:

ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(myFile));
List<MyObject> myList = (List<MyObject>) inputStream.readObject();