【问题标题】:android: How to load lot of data (xml file) and keep it throughout the applicationandroid:如何加载大量数据(xml文件)并将其保存在整个应用程序中
【发布时间】:2023-03-22 10:23:01
【问题描述】:

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

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

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

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

一些可能的解决方案:

  • 单例(这会将数据加载到一个对象中)使用this 或其他方式?
  • 使用像 there 这样的 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 个字符。

【问题讨论】:

  • 这个 XML 可能有多大?
  • 可以小到 100 -200kB 但也可以是 2-6 MB 甚至更多..
  • 你有没有想过将它保存在 Application 对象中?
  • 您认为从应用程序扩展并加载它吗?是的,我做到了,但我不知道是否可以。
  • 是的,我就是这么想的。我不时使用这种方法。

标签: android xml loading bigdata storing-data


【解决方案1】:

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

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

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

【讨论】:

  • 好答案。我正在做一个类似设置的项目。我的单例包含对我的数据集的引用,该数据集最初检查数据库。如果未找到,它将从 Web 中提取 .xml,然后填充数据库。然后,因为单例没有被保存,下一次就可以从数据库中拉取。
  • 如果我理解的话。您下载 xml 文件,然后填充数据库,然后如果您需要在应用程序运行时从数据库中获取数据?
  • 是的,这是基本概念。该方法的内部工作原理取决于您的实际应用程序(何时更新/填充数据库、存储它的位置、如何在应用程序中访问它等)。
【解决方案2】:

扩展Application 是一种解决方案。您可以使用this 示例。

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 很好的答案,虽然应该说你会怎么做
    猜你喜欢
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多