我在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);
...帮助
答案 0 :(得分: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游戏中的静态字段。