OnSharedPreferenceChangeListener срабатывает, когда пользователь входит в действие предпочтения в первый раз


У меня есть PreferenceActivity и сервис в моем приложении среди других компонентов.

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

Моя проблема заключается в том, что пользователь вводит действие предпочтения в первый раз. Событие OnSharedPreferenceChange запускается один раз для каждого предпочтения в разделе "предпочтения.xml", хотя никаких предпочтений не было изменено.

Как мне избежать такого поведения? Я не хотите, чтобы событие OnSharedPreferenceChange было запущено при первом входе пользователя в "действие настроек".

Спасибо

2 2

2 ответа:

Просто используйте флаг в sharedpreferences, вот так

 if( prefs.getBoolean( "preferenceFirstTime", true ) ) {
      SharedPreferences.Editor editor = prefs.edit();
      editor.putBoolean("preferenceFirstTime", false);
      editor.commit();
 } else {
      //this is not the first time 
 }

У меня была та же проблема, и я нашел другой способ решить эту проблему, используя это.

PreferenceManager.setDefaultValues(this, R.xml.preference, false);

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