收聽 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
不再需要時,請記得取消註冊該偵聽器。