我知道这里有很多这类问题,但我还没找到一个有效的问题。
在过去的30分钟左右,我玩的是SharedPreferences,到目前为止,这些值保存没有任何问题,但是当您通过长按后退按钮或使用任务管理器终止进程时,您将重新启动该应用程序,它将返回默认值。
现在默认值为50,因为我正在使用均衡器并具有平坦/重置按钮
所以是的,基本上我如何保存这些值并保存它们?!
以下是我的各种尝试:
尝试1:
private int isFirstTime()
{
SharedPreferences sp = getSharedPreferences("sliders", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
for (int i = 0; i < num_sliders && i < MAX_SLIDERS; i++) {
editor.putInt("sliders", sliders[i].getProgress());
editor.putInt("bass_boost", bass_boost.getProgress());
editor.commit();
}
return num_sliders;
}
尝试2:
public int saveProgress(){
SharedPreferences sp = getSharedPreferences("sliders2", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putInt("sliders", sliders[0].getProgress());
editor.putInt("sliders2", sliders[1].getProgress());
editor.putInt("sliders3", sliders[2].getProgress());
editor.putInt("sliders4", sliders[3].getProgress());
editor.putInt("sliders5", sliders[4].getProgress());
editor.putInt("sliders6", sliders[5].getProgress());
editor.putInt("sliders7", sliders[6].getProgress());
editor.putInt("sliders8", sliders[7].getProgress());
editor.putInt("sliders9", sliders[8].getProgress());
editor.putInt("sliders10", sliders[9].getProgress());
editor.putInt("bass_boost", bass_boost.getProgress());
editor.commit();
return min_level - max_level;
}
尝试3:
public int getProgress(){
SharedPreferences sp = getSharedPreferences("sliders", MODE_PRIVATE);
for (int i = 0; i < num_sliders && i < MAX_SLIDERS; i++) {
num_sliders = sp.getInt("sliders", 0);
}
num_sliders = sp.getInt("bass_boost", 0);
return num_sliders;
}
尝试4:
public int getProgress2(){
SharedPreferences sp = getSharedPreferences("sliders", Activity.MODE_PRIVATE);
num_sliders = sp.getInt("sliders1", -1);
num_sliders = sp.getInt("sliders2", -1);
num_sliders = sp.getInt("sliders3", -1);
num_sliders = sp.getInt("sliders4", -1);
num_sliders = sp.getInt("sliders5", -1);
num_sliders = sp.getInt("sliders6", -1);
num_sliders = sp.getInt("sliders7", -1);
num_sliders = sp.getInt("sliders8", -1);
num_sliders = sp.getInt("sliders9", -1);
num_sliders = sp.getInt("sliders10", -1);
num_sliders = sp.getInt("bass_boost", -1);
return num_sliders;
}
任何帮助都将非常受欢迎,因为我需要推出应用程序更新!
谢谢。
答案 0 :(得分:1)
我知道这是一个古老的问题,但我只是浪费了两个小时,如果有人遇到同样的问题,也可以给我答案。
在应用程序杀戮/设备重新启动时,我必须做的设置才能正常生存:
所以,例如:
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.remove(Constants.PREF_STARTED_EXPERIMENTS);
editor.commit();
editor.putStringSet(Constants.PREF_STARTED_EXPERIMENTS, experiments);
editor.commit();
希望能节省一些时间。
答案 1 :(得分:0)
问题可能是将空值保存到首选项文件中。请尝试this answer解决您的问题。