将自定义对象存储到 Android 内部存储的最佳方式?

Posted

技术标签:

【中文标题】将自定义对象存储到 Android 内部存储的最佳方式?【英文标题】:Best Way to Store Custom Objects to Internal Storage in Android? 【发布时间】:2012-09-25 21:40:56 【问题描述】:

我有一个自定义对象“TimeSheet”,它本身包含 Calendar、DateFormat 和 int 字段。该应用程序旨在使用其中几个对象,因此我计划在创建它们时将它们存储在一个列表中,并且我希望应用程序能够在应用程序关闭并重新加载时将这些对象保存到内部存储中当它打开时。

android 开发方面我还是个新手(到目前为止我只发布了一个应用程序),所以我不完全确定最好的方法。我猜 ObjectInputStream 及其对应的输出可能是最好的选择,但我不完全确定。我完全愿意改变我的设计策略,以最简单的方式存储这些 TimeSheet 对象的集合。

谁能推荐一个好的方向,如果可能的话,提供简短的例子吗?

谢谢!

【问题讨论】:

【参考方案1】:

这样的事情没有唯一的正确答案。很大程度上取决于您存储的数据量。如果您没有太多数据,请使用SharedPreferences,如果您有很多数据并且很复杂,请使用database。如果您没有太多数据,我不会使用数据库。您希望使事情尽可能简单,而添加数据库会使事情复杂化。这是一个讨论不同选项的链接。看看这个。希望对您有所帮助:

http://developer.android.com/guide/topics/data/data-storage.html

【讨论】:

似乎 ObjectInputStream 和 ObjectOutputStream 可能是我需要在设备内部存储数据的解决方案。我存储的数据不是特别大,所以我想我现在会放弃使用数据库。反正我觉得有点过头了。【参考方案2】:

有两种方法可以做到这一点

    将其保存在 SQLite 数据库中.. 将对象以 json 格式保存在文件中

See this discussion

【讨论】:

如果您认为这些问题是重复的,请考虑将它们标记为重复。否则,您应该包含链接页面中的一些内容(带有署名),以使此答案独立。【参考方案3】:

老实说,我建议使用 SQLiteDatabase 来存储它们:编写函数将您的 3 个字段映射到数据库(Calendar 将变为 NUMERIC,DateFormat 将是字符串,而 int 字段将全部是 NUMERICs)并从数据库中的一行重建对象字段。前期有点重,但会让不可避免的功能扩展变得更容易。

【讨论】:

您好,您能否提供一个链接,指向如何执行此操作的教程?你刚刚写的大部分内容都飞到了我的头上。 :) 最快的路径是(在这种情况下)developer.android.com/guide/topics/data/data-storage.html#db,其中包含指向更详细示例的链接。

以上是关于将自定义对象存储到 Android 内部存储的最佳方式?的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义对象的集合存储到 user.config 文件中?

将自定义分配的对象存储在数组中。内存管理

Azure Cosmos SQL API - 如何将自定义对象存储为 @PartitionKey

将自定义元数据设置为 Google Cloud Storage 中的对象

将自定义组件存储配置绑定到 ViewModel 存储

Android SQLite, JSON, List 用于存储常量对象