SharedPreferences sharedPreferences = ...; sharedPreferences.registerOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener); private finalSharedPreferences.OnSharedPreferenceChangeListenermOnSharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() { @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { //TODO } }
请注意:
仅当添加或更改值时,侦听器才会触发,设置相同的值将不会调用它;
侦听器需要保存在成员变量中,而不是匿名类,因为registerOnSharedPreferenceChangeListener它使用弱引用进行存储,因此将被垃圾回收;
除了使用成员变量,它也可以由类直接实现,然后调用 registerOnSharedPreferenceChangeListener(this);
当不再需要使用时,请记住注销该侦听器unregisterOnSharedPreferenceChangeListener。