0

我正在设计一个应用程序,该应用程序涉及解析大型 XML(包括大量文本)并在整个应用程序中保持可访问的序列化数据。我打算有一个数据对象来保存数据,并且一些类可以访问数据。我总是只需要显示部分文本。

是的,我的问题与这个问题非常相似,也许是同一个问题,但如果可能的话,我不想使用这个解决方案。

我想知道如何加载数据、加载数据的位置以及如何在整个应用程序中保持可访问性。不可能每次都在onCreate()方法中加载它,例如当屏幕方向改变时。

对我来说最好的方法是,如果我可以将 xml 文件加载(解析)到一个对象中,并且该对象在整个应用程序中都可以访问,但我不知道在哪里、如何加载它以及如何在整个应用程序中保持可访问性. 这个对象有我需要的一切。

一些可能的解决方案:

  • 单例(这会将数据加载到一个对象中)使用这个或其他东西?
  • 使用像那里的 SQLite 解决方案(与上面相同的链接)(我不想使用它)
  • 使用延迟加载(加载我实际需要的部分文本)(我也不想使用它)

有人能说什么是最好的解决方案吗?并描述如何去做?

(对不起我的英语不好)

  • 编辑 1: xml 结构:

    < root >
         < some elements >
         < /some elements >
    
         < element with lot of text >
             text.....
         < /element with lot of text >
    
         < element with lot of text >
             text.....
         < /element with lot of text >
              .
              .
              .
         < element with lot of text >
             text.....
         < /element with lot of text >
    < /root >
    

如果它会有所帮助。一个元素中的文本通常包含 5000 - 15000 个字符。

4

3 回答 3

2

单例有各种普遍的缺点;我个人建议不要将它们用于任何非无状态且独立于其他一切(包括文件或网络,您从中加载 XML)的东西。

然而,关于您的应用程序的主要问题是,Android 可以随意启动和停止您的应用程序。这意味着,您的单例需要经常重新创建,例如,您需要经常解析您的数据(重新启动不会保留单例!)。

在不了解您的 XML 的情况下,很难推荐一种具体的方法;如果适用,请对数据库进行初始解析,这样您就可以轻松地从数据库中接收单个值,而无需进行额外的解析。

于 2014-08-19T19:52:59.937 回答
0

扩展Application是一种解决方案。你可以使用这个例子。

于 2014-08-19T21:06:39.103 回答
0

我决定使用 SQLite 数据库。我阅读了很多关于 Singleton 的讨论,其中一些是负面的(难以测试,同步存在一些问题)。因此,为了避免这些问题,我将实现将 xml 文件解析到 DB 中。

于 2014-08-20T09:49:04.023 回答