Сброс SharedPreferences после завершения процесса

Да, я знаю, что здесь много таких вопросов, но я еще не нашел ни одного, который работает.

В течение последних 30 минут или около того я играл с SharedPreferences, и до сих пор значения сохранялись без проблем, но когда вы завершаете процесс либо длительным нажатием кнопки «Назад», либо с помощью диспетчера задач, и вы перезапускаете приложение, он вернется к значениям по умолчанию.

Теперь значение по умолчанию равно 50, так как я делаю свой эквалайзер и у меня есть кнопка Flat/Reset.

Итак, да, в основном, как мне сохранить значения и сохранить их?!

Вот мои различные попытки:

Попытка 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;
}

Любая помощь будет очень признательна, так как мне нужно развернуть обновление приложений!

Спасибо.


person SimplisticApps    schedule 28.04.2014    source источник
comment
I need to get the apps update rolled out в качестве примечания: пожалуйста, не спешите публиковать обновления.   -  person    schedule 28.04.2014


Ответы (2)


Я знаю, что это старый вопрос, но я только что потратил на это два часа, мог бы также дать свой ответ, если кто-то столкнется с той же проблемой.

Что мне нужно было сделать, чтобы настройки правильно сохранились после уничтожения приложений / перезагрузки устройства:

  1. Используйте редактор, чтобы УДАЛИТЬ старое значение
  2. Совершить
  3. Поставьте новое значение
  4. Совершить

Так, например:

SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.remove(Constants.PREF_STARTED_EXPERIMENTS);
        editor.commit();

        editor.putStringSet(Constants.PREF_STARTED_EXPERIMENTS, experiments);
        editor.commit();

Надеюсь, это сэкономит кому-то время.

person Master_T    schedule 03.06.2015

Проблема может заключаться в том, что нулевые значения сохраняются в файле настроек. Попробуйте, если этот ответ решит вашу проблему.

person Rajveer Singh    schedule 28.04.2014