我正在使用SharedPreferences
来存储并加载我游戏中的最高分。我发现的问题是,当我从'X'标记关闭模拟器时,它没有保存最高分,但如果我首先将应用程序放在后台然后关闭它(在模拟器内或从'X' 'mark)它将保存并加载最好的分数。这是我使用的代码:
//save the highscore
SharedPreferences prefs = this.getContext().getSharedPreferences("BEST", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("key", best);
editor.commit();
//load the highscore
SharedPreferences prefs = this.getContext().getSharedPreferences("BEST", Context.MODE_PRIVATE);
best = prefs.getInt("key", 0);
note :我已经在两个实际设备上测试了游戏( LG Optimus L2 和三星Galaxy A3 ),并且两者都在工作正常。这是我不应该担心的事情?
编辑:我忘了提到我在直接重命名项目文件夹后必须使用“Clean Project”,从这里我遇到了一些错误。也许这与它有关。
答案 0 :(得分:0)
您的分数是否得到保存取决于您运行代码以保存它的位置(看起来完全没问题)。例如,如果您将其保存在活动的onStop()
方法中,则将其置于后台将正确保存。
通过关闭窗口来关闭模拟器可能会非常猛烈地杀死它,在这种情况下很容易就会出现你的应用程序没有收到它通常所做的生命周期回调的情况,它会立即被终止,因此您保存到SharedPreferences
的代码无法运行。在真实设备上,这种立即关机相当于通过按住电源按钮或取出电池来关闭手机,这不是你可以准备的。
TL; DR:这似乎很正常,我不担心。