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