【发布时间】:2009-08-06 16:14:43
【问题描述】:
我需要在我的服务中保留一个复杂的对象,以便我可以可靠地返回它(它保存更新)。最初我将它编码为我的服务实现中的一个类,但我观察到更新对象会定期重置为 null,这告诉我服务器类本身已重新创建。有人可以推荐轻量级可靠策略来保存和重新创建此类更新对象(我可以使其可序列化)
【问题讨论】:
标签: android serialization persistence
我需要在我的服务中保留一个复杂的对象,以便我可以可靠地返回它(它保存更新)。最初我将它编码为我的服务实现中的一个类,但我观察到更新对象会定期重置为 null,这告诉我服务器类本身已重新创建。有人可以推荐轻量级可靠策略来保存和重新创建此类更新对象(我可以使其可序列化)
【问题讨论】:
标签: android serialization persistence
当您的服务重新启动时,将调用 onStop() 和 onStart() 方法。您可以使用 onStop() 方法将数据保存到持久位置,例如应用程序sqlite 数据库。调用onStart()时可以恢复数据。
您可以在 android 开发人员 website 上阅读有关使用 sqlite 数据库的信息。
【讨论】:
android.app.Service 没有 onStop() 方法,onStart(android.content.Intent, int) 已被弃用。
如果我这样做,我会使用 SharedPreferences。如果它太复杂了,我同意@Scharrels 关于使用 sqlite DB(这很可能是谷歌的建议,因为他们的示例在最小的情况下使用 sqlite,这意味着它具有合理的性能水平)。
我发现 SharedPreferences 在许多情况下都很有用。首先,作为键值对存储,可以轻松存储各种不同的数据,此外,如果需要,您可以将对象编码为字符串,并将它们存储在单个字段中。其次,您可以使用多个 SharedPreference 存储,只需检索具有不同名称的存储(同时仍保持它们私有)。最后,我发现它们很容易使用,因为获取数据和存储数据实际上只是几行代码(不包括您可能需要的任何数据转换或序列化)。
【讨论】: