【问题标题】:The most effective way to load and use objects from an xml-file从 xml 文件加载和使用对象的最有效方法
【发布时间】:2016-08-20 18:14:41
【问题描述】:

我正在寻找最聪明(也是最有效)的方式来实施以下项目:

我想开发一个可以访问大约 100 种不同运动锻炼的应用。练习以 xml 文件的形式提供。在不同的活动中,可以通过不同的方式访问练习:

  • 全部显示
  • 仅显示特殊类别的练习
  • 标记为收藏并显示收藏夹
  • 显示练习的详细信息
  • 排序

加载 xml 文件并创建练习对象已经在工作,而且没有问题。但我考虑了实现此类事情的最有效方法。考虑 RAM 和性能...

  • 应用程序启动后解析 xml 文件,创建 100 个对象并在应用程序运行期间处理它们(当然,如果对象同时被垃圾收集器清理,请确保重新加载数据)。这是可能的和推荐的吗?这样一个中心点,我可以在所有活动中拾取物体,看起来像什么?我可以在任何地方找到示例吗?
  • 每次创建活动(即以任何方式使用练习)时都解析 xml 文件?
  • 完全不同的方式?

也许有人可以给我一个关键字。

【问题讨论】:

  • 我建议考虑将 XML 存储到 DB 并在您的 APP 中使用 DB。之后,重新解析 XML 文件就不会出现问题,并且您想要的所有操作都不会出现问题。
  • 我从外部资源获取文件,并且会不时更新。所以我认为在我的应用程序中使用这个文件是一种简单的方法......
  • 不时更新此信息更容易。
  • 你的意思是不定时更新数据库?所以您建议根本不使用 xml 文件?我是 android 中 sqllite 的新手,并且已经尝试获取有关它的信息。使用和交付现有文件似乎很容易(而且它只有 100 个数据集)...... - 使用提供数据的数据库没有问题吗? - 不时用新的数据集更新它没问题吗?您是否推荐一个关于带有交付数据的 sqllite 的好教程?找了很多关于sqllite的教程,但是都是只用sqllite做用户输入的。。。非常感谢树莓
  • 这个你可以看一下这个stackoverflow.com/a/19196178/2685996

标签: android xml ram


【解决方案1】:

我从您的问题中了解到,您想在应用程序每次启动时解析 XML,并在那时生成 100 个对象,您想在所有其他活动中使用这些对象。

您可以扩展Application 类,以便为多个活动访问同一个对象。 Take look at this question

Application 是您的应用程序的基类,它是第一个调用的。因此,您可以在此处调用您的服务,也可以在此处调用您的对象的 setter/getter。通过它您可以在所有活动中访问它。

Learn more about Application

另外,您可以使用SharedPreferenceSQLite 将数据存储在数据库中。

【讨论】:

  • 感谢您的回答!使用应用程序是一件有趣的事情,我不知道。是的,我想在应用程序启动时解析 XML,但我不确定了。对我(一个 android 初学者)来说,不一遍又一遍地解析文件听起来不错。我对实现此类要求的最佳方式感兴趣。
  • 看看我在回答中发布的问题。您将大致了解如何使用应用程序类
  • 我阅读了很多关于 XML、JSON 和 Sqlite 的信息,并决定使用数据库。您有关应用程序的信息在其他地方对我非常有用。谢谢你。
  • 首先,XML 和 JSON 不是数据库。它们是客户端和服务器之间的数据交换格式。其次,SQLite 和 SharedPreferences 是 Android 的本地数据库。第三,Application 类不是存储数据的方式,而是获取信息的方式。从服务器并定义将数据存储在数据库中的方法。您可以在整个应用程序中使用这些方法。最后,如果您觉得我的回答有帮助,您可以投票/接受。
  • 抱歉,我可能使用了一个不太正确的术语。当然 XML 和 JSON 不是数据库。我只想说,我决定不使用 XML,而是使用 SQLite。谢谢,我将在我的应用程序的另一个位置使用 Applicin 来加载数据并在每个活动中使用它。
【解决方案2】:

这只是我的建议如果可能的话,请您将 XML 更改为 JSON 格式,这样您就可以使用 GSON 转换器和库来摆脱性能问题。

【讨论】:

  • 我去搜集一些关于JSON的资料,谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-10-11
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
  • 2021-09-03
  • 1970-01-01
  • 2016-03-06
  • 2012-06-23
相关资源
最近更新 更多