3

我已经在 Libgdx 引擎中创建了 Android 游戏......一段时间后,我注意到在某些应用程序杀手中杀死应用程序后,我保存到首选项中的游戏选项会丢失,或者如果我在 Android 中执行“强制关闭”设置...

有没有办法防止这种情况?我从来没有做过“清除数据”,只是“强制关闭”......

有没有一个很好的替代偏好?

真是奇怪的问题……

这就是我获取并将值放入首选项的方式...

/** Shared preferences */
public static final Preferences prefs = Gdx.app.getPreferences("MyPreferences");

/** Earned experience points */
public static int experiencePoints=SettingsManager.prefs.getInteger(EXPERIENCE_POINTS, 0);

// Store new experience points
SettingsManager.prefs.putInteger(EXPERIENCE_POINTS,experiencePoints);

帮助...

4

1 回答 1

4
  1. 您只更新内存中的首选项对象
  2. 您将首选项存储在静态字段中。

要解决第一个问题,您需要将首选项“刷新”到磁盘:

SettingsManager.prefs.flush();

您应该在首选项一致时执行此操作,最好不要在主 UI 线程上执行此操作。请参阅https://code.google.com/p/libgdx/wiki/Preferences#Flushing

当您的 Activity(Android 上的 Libgdx 应用程序)退出但其底层的 Dalvik VM 没有退出时,静态字段可能会导致问题,然后在同一 VM 中启动新的 Activity。我不确定 Preferences 对象是否存储了对可能在活动之间过时的 Libgdx 状态的任何内部引用,但最好是安全并避免 Android 游戏中的静态字段,除非您真正了解后果。

于 2013-08-23T23:50:38.357 回答