【问题标题】:What's the method for storing arrays or custom objects (persistent data)?存储数组或自定义对象(持久数据)的方法是什么?
【发布时间】:2012-10-03 00:54:39
【问题描述】:

有什么方法可以将自定义数据对象存储为持久数据而不在 Android 中使用 SQLite?

我在屏幕上有一个 3*3 的 EditText 字段矩阵,我想将这 9 个字段的所有内容存储到一个“配置文件”(对象)中。可以创建其他配置文件以具有包含不同数据的不同矩阵。

我想到了 XML,但我想听听其他意见。

【问题讨论】:

    标签: android persistent-storage


    【解决方案1】:

    您可以序列化数组并将其存储到共享首选项中,类似于此问题的答案:

    Android Sharepreferences and array

    要存储多个配置文件,您可以使用“Profile-1”、“Profile-2”等键将每个配置文件存储在共享首选项中。然后,您可以拥有另一个共享首选项,其中包含您拥有的配置文件数量。

    【讨论】:

    • 感谢您的回答。我没有看到那个问题/答案。我喜欢它的样子,但是动态数量的配置文件呢?编辑:例如:创建 5 个配置文件(每个配置文件都有 3*3 矩阵对象) 我知道如果我序列化对象(如果它只是一个配置文件)它可以工作。多头呢?再次感谢。
    • 我添加了更多信息。如果您有动态数量的配置文件,您可能需要考虑使用 sqlite。当然,您会想要存储更多数据,而 sqlite 将是最佳选择。
    • 是的,很可能,非常感谢...我将您的答案标记为我想我会尝试在 sqlite db 中的每个配置文件的一个字段中序列化/反序列化所有配置文件信息,我认为会更好。
    • @Deco 我使用 SQLite 来存储这 9 个对象(将它们的属性序列化为字符串),但这远不合适。我决定从现在开始改用 SimpleXML,简单的 xml api 效果很好。它完成了整个工作。将对象转换为 xml 结构的对象,查看网站 link - 它有很好的教程列表
    • @Deco 我使用 xml 序列化的原因是我可能在一个类中处理不同数量的类。而且由于我希望有机会通过网络进行备份,因此 xml 似乎是正确的选择。至于你的情况,是的,你可以。如果您只对支持您的实例状态感兴趣,请查看有关如何在 Android 中管理 SQLite 数据库(更复杂但具有更大模式的潜力)和共享首选项(更容易)的文档。祝你好运,如果您有任何疑问/问题,请告诉我。
    【解决方案2】:

    你可以试试

    public bool save(SaveableObject s, Context context, String fileName)
    {
        try
        {
            FileOutputStream fos;
            ObjectOutputStream os;
            File file1 = context.getExternalFilesDir(null);
            File file2 = new File(file1, fileName);
            fileName = file2.getAbsolutePath();
            fos = context.openFileOutput(fileName, Context.MODE_PRIVATE);
            os = new ObjectOutputStream(fos);
            os.writeObject((Object)analysis);
            os.close();
            fos.close();
        } 
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
    

    应该将文件保存到/sdcard/fileName

    【讨论】:

      【解决方案3】:

      您的选项在文档的Data Storage 主题中进行了说明。

      【讨论】:

      • 谢谢。我检查了一下,但有些我觉得我在这些选项之间。 SharedPref 似乎有点简单,但 sqlite db 对于我需要的东西有点复杂。如果没有其他方法,我将使用 SQLite.. 谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-17
      • 1970-01-01
      相关资源
      最近更新 更多