我有一個preferenceActivity實現OnSharedPreferenceChangeListener,我已經實現了onSharedPreferenceChanged方法。我使用關鍵字「this」在onResume和onPause()中註冊和取消註冊一個監聽器。正在實施OnSharedPreferenceChangeListener不良做法?
目前爲止所有的工作都很好,但我擔心我的聽衆會被垃圾收集,如in this post所述。我做錯了什麼?似乎太簡單了,但如果它沒有損壞,我不想修復它!
我的活動
public class MyPreferences extends PreferenceActivity implements
OnSharedPreferenceChangeListener {
//blah blah blah
}
我onSharedPreferenceChangeListener
@Override
public void onSharedPreferenceChanged(SharedPreferences sp, String key) {
doMyStuff();
} //onSharedPreferenceChanged
的onResume()&的onPause()
@Override
protected void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
} //end onResume
@Override
protected void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
} //end onPause
看來,onPause()和onResume()之間的任何首選項更改通知都不會被對象接收,因爲首選項活動將在此時間範圍內運行。這會導致您的應用錯過更改通知。 – Califf
Wow 4 years ...,OP在偏好活動中實現了聽衆。如果我被迫從外面改變同樣的偏好,我會在那裏處理它。 – Samuel