java - 警告 Android 用户应用更新可能会导致旧应用版本的数据丢失?

标签 java android mobile

我正在为 Android 编写游戏。当用户完成一个级别时,如果他们输了,他们可以从下一个级别重新开始(即我需要存储一个整数来记住他们到达了哪个级别)。如果应用在播放过程中中断,我会将世界状态保存到磁盘(这是存储 map 和游戏实体的复杂状态)。

我想在未来保留更改游戏代码和保存/存储世界状态的方式的选项。但是,我必须考虑这样一种情况,当用户在他们的手机上有旧版本的世界状态时,因为他们正在玩游戏,他们升级了应用程序,现在应用程序无法加载世界状态。

必须编写代码将旧版本的数据迁移到新版本的数据,如果有某种方法可以避免这种情况,那将是一件痛苦的事情。如果我能以某种方式要求用户在更新之前完成他们当前正在进行的游戏,那就太好了。这可以做到吗?还有其他选择吗?

我不打算经常这样做。我想在获得一些早期反馈的同时迭代开发我的游戏,但如果我现在必须修复世界状态的保存和恢复方式,这就很困难。

我希望这不是一个愚蠢的问题,但在 PC 或控制台上,您可以在游戏过程中拥有无法保存的游戏,或者您只能在关卡之间保存。我只是发现 Android 在这里有点麻烦,因为您必须为所有游戏设置一个保存游戏策略。

最佳答案

您无法阻止用户升级应用,并且在安装(或升级)您的应用之前您无法执行任何代码。

坦率地说,由于升级而丢失数据是 Not Acceptable 。如果您使用 SQLiteOpenHelper,您会自动获得漂亮的 Hook ,帮助您完成升级过程。

我知道您有一个非常复杂的游戏存档设置,但尽量保持它的灵 active 以便于升级。有很多技术可以帮助您做到这一点。

Android 和 PC 完全不同 - 在 PC 上,您可以坐下来玩几个小时。在 Android 上,您玩得非常快,然后再做其他事情。或者,您在玩游戏时接到一个电话,然后被迫退出游戏。

关于java - 警告 Android 用户应用更新可能会导致旧应用版本的数据丢失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4083531/

相关文章:

java - Cassandra querybuilder 使用聚合函数选择多列

java - jetty HTTP 日志记录

java - 如何用变量初始化 Java 对象?

android - 工具栏上后退按钮的自定义图像和颜色

android - 将 JSONObject 传递给另一个 Activity

java - Android 更新新版本后重新启动应用程序

java - 如何让WebApp在嵌入式jetty中的类路径上查找应用程序属性?

android - 从类获取值时出现空指针异常

security - 通过移动应用程序安全验证位置声明

javascript - Opera Mini Jquery AJAX 未加载