进程终止后重置SharedPreferences

时间:2014-04-28 14:04:01

标签: android sharedpreferences key-value equalizer

我知道这里有很多这类问题,但我还没找到一个有效的问题。

在过去的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;
}

任何帮助都将非常受欢迎,因为我需要推出应用程序更新!

谢谢。

2 个答案:

答案 0 :(得分:1)

我知道这是一个古老的问题,但我只是浪费了两个小时,如果有人遇到同样的问题,也可以给我答案。

在应用程序杀戮/设备重新启动时,我必须做的设置才能正常生存:

  1. 使用编辑器删除旧值
  2. 提交
  3. 放置新值
  4. 提交
  5. 所以,例如:

    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解决您的问题。