設計問題基本上 - 有一個PreferenceActivity
應該讓它實現OnSharedPreferenceChangeListener
還是應該在另一個類中定義這個功能 - 比如在內部類中?有沒有什麼理由比其他方法更喜歡那個?Android:應該在哪裏定義/註冊OnSharedPreferenceChangeListener
還應該在哪裏註冊監聽器?我的意思是the docs和常識決定在onResume/onPause
分別註冊/取消註冊,但看到azillionregistrations在onCreate
我只是想知道我是否失去了一些東西。
另外我不太確定如果註銷失敗(因此here例如註銷可能不會被調用,因爲onStop
不保證被調用)必然會導致泄漏。所以,如果我有例如
class MyPref extends PreferenceActivity implements
OnSharedPreferenceChangeListener {
SharedPreferences sharedPreferences;
// init sharedPreferences
onStart(){
sharedPreferences.registerOnSharedPreferenceChangeListener(this);
}
// no unregistration
}
這會泄露MyPref
實例一旦我回到我的其他活動?
最後 - 對OnPreferenceChangeListener
也適用同樣的考慮嗎?
編輯:回到我看不到註冊OnPreferenceChangeListener
- 我是盲目的嗎?
_Doing registration and de-registration_ - why?是不是需要註銷聽衆?我問的是什麼泄漏? – 2013-03-25 01:10:53
您不需要取消註冊。如果系統決定殺死該應用程序,系統將簡單地殺死它。此外,每個應用程序都運行在它自己的VM實例中,也會被殺死,因此您不必註銷任何內容,也不會發生任何泄漏 - 當進程終止時,所有內存都將被釋放(內核將處理該問題) 。這就是爲什麼建議您將數據保存到'onPause'或'onStop'中的永久存儲器。但是,這不會發生在'onPause'和'onResume'之間。 – Shade 2013-03-25 01:14:51
@Mr_and_Mrs_D,你發現這個問題有更好的答案嗎?如果是這樣,爲什麼不爲所有人的利益回答呢? – Shade 2013-03-30 22:58:15