【问题标题】:Best way to store some data Android [closed]存储一些数据Android的最佳方式[关闭]
【发布时间】:2013-11-04 14:24:13
【问题描述】:

我正在开发一个 Android 应用程序作为云网络服务的客户端。在登录屏幕中,我以 JSON 格式下载了大量数据,例如联系人列表和文件夹列表(仅名称和某些功能,不包括包含的文件)。在对此 JSON 进行反序列化后,我将联系人列表和文件夹列表存储在 .application 文件上的两个静态公共列表元素中,但在某些手机(如 Galaxy S3 和 Galaxy Note 2)中,当应用程序进入时在后台,他们保存活动,但不保存此数据列表,因此如果用户有时从后台返回,他发现应用程序的联系人列表为空或出现空指针异常,因为某些 phose 删除了此列表。为什么?有可能以其他方式保存它们吗?数据很复杂,因为联系人列表对象很复杂,创建数据库需要大量工作。另一个选项可以是共享首选项,用于存储联系人列表的序列化 json,但最多可以是 2MB json。

【问题讨论】:

  • 在 GreanDAO 中使用 sqlite
  • 阅读一些关于存储数据的教程。 android支持sqlite

标签: java android json data-storage


【解决方案1】:

这是数据存储的文档。

Data Storage

内部存储将是最简单的解决方案。并且符合要求。

【讨论】:

  • 谢谢,我已经读了很多遍了,但是 sharedpreferences 对它来说太小了,数据库 noSQL 不是存储复杂数据对象的最简单的东西
  • 然后尝试内部存储。这是一个简单的方法。
  • 这可能是我在这里读到的最简单的解决方案。谢谢,我现在试试!
  • 不客气。接受我的回答将是最好的感谢;)
  • 我有一个自定义对象列表,我无法调用“getBytes()”将其保存在文件中。
【解决方案2】:

这对您来说可能是一个很好的解决方案: http://www.couchbase.com/communities/couchbase-lite

【讨论】:

    【解决方案3】:

    我认为静态变量几乎是出于内存目的而被垃圾收集的第一件事,所以这就是你丢失这些数据的原因。 在您的 onResume 方法中检查您的列表是否为空,是否重新开始下载任务。

    【讨论】:

    • 我还在我的应用程序中包含了一个启动和暂停活动的计数器,以在锁定屏幕或后台恢复后刷新数据。这已经适用于所有智能手机,例如 S3 或 Galaxy note 2 除外,我可以在其中恢复应用程序作为后台,但它不会刷新数据。我尝试添加此控件,谢谢
    【解决方案4】:

    如果您将来自云端的数据存储到数据库中,那么您必须先使用将安全存储所有数据的事务,然后再执行其他任务。 请访问以下链接观看:
    http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#beginTransaction%28%29

    【讨论】:

      【解决方案5】:

      我通常使用基于名为 Data Droid (http://www.datadroidlib.com/) 的小项目的非常好的内容提供者方法。模式非常好,可重复使用!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-29
        • 1970-01-01
        • 2016-06-27
        • 1970-01-01
        • 2021-05-06
        • 1970-01-01
        • 2019-08-12
        • 1970-01-01
        相关资源
        最近更新 更多