Android libgdx prefs迷路了

时间:2013-08-23 20:15:41

标签: android libgdx preferences

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

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

是否有替代prefs的好方法?

真的很奇怪......

这就是我如何获取并将值放入prefs ...

/** 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);

...帮助

1 个答案:

答案 0 :(得分:3)

  1. 您只是更新内存中的偏好设置对象
  2. 您将偏好设置存储在静态字段中。
  3. 要解决第一个问题,您需要" flush"磁盘的首选项:

    SettingsManager.prefs.flush();
    

    当prefs一致时,你应该这样做,理想情况下不在主UI线程上。见https://code.google.com/p/libgdx/wiki/Preferences#Flushing

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