我编写了一个将一些数据保存在JSON文件中的游戏。我想在退出游戏之前保存玩家的数据。
在这个论坛上的许多主题中都读到,如果我在onStop()
方法中这样做会更好,所以这样做:
我写了一个类,用JSON文件保存玩家游戏并在onStop()
方法上调用它:
@Override
protected void onStop() {
super.onStop();
SaveState.saveState(getApplicationContext());
}
但是,在日志中我们可以看到该方法在循环结束之前被终止。
我尝试在任务中设置方法,但它是一样的。
现在我不知道该怎么做!
另一个类中的方法如下所示:
for (int i = 0; i < GlobalVar.Done.size(); i++) {
if (GlobalVar.Done.get(i)) {
SaveJson.changejson(context, "savegame.json", Lvl, GlobalVar.LvlId.get(i), "Done", true);
Log.i(SAV, "Saving done true : " + i + " id : " + GlobalVar.LvlId.get(i) + " Boolean : " + true);
} else if (!GlobalVar.Done.get(i)) {
StringBuilder sb0 = new StringBuilder(GlobalVar.TabStaterep[i].size());
for (int c = 0; c < GlobalVar.TabStaterep[i].size(); c++) {
sb0.append(GlobalVar.TabStaterep[i].get(c));
}
String str0 = sb0.toString();
StringBuilder sb1 = new StringBuilder(GlobalVar.TabStateClav[i].size());
for (int c = 0; c < GlobalVar.TabStateClav[i].size(); c++) {
sb1.append(GlobalVar.TabStateClav[i].get(c));
}
String str1 = sb1.toString();
SaveJson.changejson(context, "savegame.json", Lvl, GlobalVar.LvlId.get(i), "Rep", str0);
Log.i(SAV, "Saving rep : " + i + " id : " + GlobalVar.LvlId.get(i) + " Rep : " + str0);
SaveJson.changejson(context, "savegame.json", Lvl, GlobalVar.LvlId.get(i), "Keyboard", str1);
Log.i(SAV, "Saving keyboard : " + i + " id : " + GlobalVar.LvlId.get(i) + " Keyboard : " + str1);
SaveJson.changejson(context, "savegame.json", Lvl, GlobalVar.LvlId.get(i), "Indice3", GlobalVar.Tabindice3.get(i));
Log.i(SAV, "Saving indice 3 : " + i + " id : " + GlobalVar.LvlId.get(i) + " Indice3 : " + GlobalVar.Tabindice3.get(i));
SaveJson.changejson(context, "savegame.json", Lvl, GlobalVar.LvlId.get(i), "Done", false);
Log.i(SAV, "Saving done : " + i + " id : " + GlobalVar.LvlId.get(i) + " Done : " + false);
}
}