第一次提交没有引发 onSharedPreferenceChanged

First time commit didn't raise onSharedPreferenceChanged

我们调查了奇怪的行为。

我们在主 activity 中创建了 OnSharedPreferenceChangeListener 并存储在静态字段中:

public static SharedPreferences.OnSharedPreferenceChangeListener listener = null;

我们也是在onCreate方法中创建并注册的

我们有三个按钮可以更改设置并以这种方式调用提交:

                SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
                SharedPreferences.Editor editor = prefs.edit();
                editor.putString("setting1", "value");
                editor.commit();

问题如下:

点击按钮时onSharedPreferenceChanged第一次没有触发!当我们第二次点击时一切正常。为什么第一次没有引发事件?

希望对某人有所帮助:

问题是我们在 onCreate 方法中注册了它。如果您将在 onResume 方法中创建它,它就可以工作。

此外,请查看此答案以了解 SharedPreference 的常见问题:SharedPreferences.onSharedPreferenceChangeListener not being called consistently