【问题标题】:Java Android SharedPreferences issuesJava Android SharedPreferences 问题
【发布时间】:2013-05-13 08:12:05
【问题描述】:

我正在 android 上制作俄罗斯方块游戏作为学校项目,现在我使用共享偏好来保存游戏的当前状态,以便以后可以恢复,我来了要意识到当您存储超过 100 个左右的首选项时,sharedprefernces 对象开始以一种奇怪的方式工作,我可以保存所有内容,但是当我尝试调用编辑器清除(e.clear + e.commit)时,它不会删除首选项。

我将不胜感激有关此问题的任何帮助

谢谢

【问题讨论】:

标签: java android sharedpreferences


【解决方案1】:

SharedPreferences 是很好的轻量级机制,如何持久化数据。

但我认为对于游戏来说这根本不是一场胜利。 SharedPreferences 通常用于保存非结构化数据,例如,如果您有一些需要登录的应用程序,当用户成功登录时,您可以将此状态保存到 SharedPreferences,然后在接下来的 Activities 中检查用户是否登录与否。但是在游戏中,你(我猜是肯定的)有结构化的数据结构(例如玩家和他们的属性(值),比如得分、输、赢等)。

所以我建议您考虑另一种数据持久化机制。具体尝试考虑使用经典对象序列化或SQLiteDatabase 的使用的可能性,这提供了更复杂的解决方案如何持久化结构化数据。

一个主要优点是您可以持久化(序列化)整个对象,然后简单地反序列化它们(而不是将它们持久化为 SharedPreferences 中的特定“块”)。关于SQLite,它提供了与经典序列化几乎相同的解决方案,但对象在数据库中表示为表。

【讨论】:

    【解决方案2】:

    如果您需要删除特定值,请使用以下命令: SharedPreferences.Editor.remove() 后跟 commit()

    将它们全部删除 SharedPreferences.Editor.clear() 后跟 commit()

    (此处引用https://stackoverflow.com/a/3687333/1584654)。

    但是,如果值仍然有限,共享首选项应该不是问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      • 2021-01-03
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多