【问题标题】:How can I save the data my app parses, so that it doesn't need to be parsed when the app is reopened later?如何保存我的应用程序解析的数据,以便以后重新打开应用程序时不需要对其进行解析?
【发布时间】:2016-12-28 11:46:55
【问题描述】:

所以我正在开发我的应用程序,它解析来自 LoL(英雄联盟)API 的数据,到目前为止一切都很好,但唯一的问题是如果用户关闭应用程序并重新打开它会再次解析数据.我希望保存从 JSON 数据解析的对象,一旦它最初解析它们,而不是每次重新打开应用程序时重新下载它们。它会降低我的应用程序的速度。

【问题讨论】:

  • 使用数据库来存储你的信息,参考 sqlite, realm
  • 我想知道 android 中是否有一些本地方式可以做到这一点?喜欢应用存储?
  • sqlite 是 android 的一部分,用于存储数据以供离线使用 refer here

标签: java android json


【解决方案1】:

将您的 JSON 数据保存为 Android SharedPreferences 中的字符串。对您来说是最方便快捷的方法。

Using SharedPreferences

【讨论】:

  • 以共享偏好存储数据不是一种有效的方式
  • 我说的是这个场景。在这种情况下,共享首选项比 sqlite db 更快
  • 请通过 Commonsware stackoverflow.com/a/15618511/6414107查看这个答案
  • @SaravInfern 感谢您的信息。一个小问题。在 Android 设备中,当您转到设置 -> 应用程序 -> 应用程序详细信息时,您可以看到应用程序数据部分。这些数据是什么意思?只有共享首选项或共享首选项 + db
  • 应用数据包含数据库、首选项、库、文件和缓存
【解决方案2】:

有几种方法可以做到这一点,但它们基本上都在做同样的事情:序列化/反序列化对象。区别主要在于您使用的是哪种持久化存储和哪种序列化机制。

至于持久性,您可以使用例如文件、数据库等。

Java 提供人类不可读的二进制序列化。相反,您可以使用 JSON、XML 等格式。我认为 Java 内置序列化将是最快的,但如果您的类同时发生变化,它将不会被反序列化。

本地持久性还允许将您解析的对象映射到数据库中,并根据需要逐个加载它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 2023-01-28
    • 2011-12-02
    • 1970-01-01
    相关资源
    最近更新 更多