2012-04-14 77 views
5

我已將registerOnSharedPreferenceChangeListener與我的SharedPreferences一起註冊在我的活動中。當我改變SharedPreferences在不同過程中運行的服務中保存的數據時,onSharedPreferenceChanged未被調用!registerOnSharedPreferenceChangeListener不適用於在不同過程中所做的更改

我應該怎麼做才能讓android撥打onSharedPreferenceChanged

+0

需要更多信息... 還要檢查這個 [http://stackoverflow.com/questions/3799038/onsharedpreferencechanged-not-fired -if-變化發生功能於單獨的活性] [1] [http://stackoverflow.com/questions/2542938/sharedpreferences-onsharedpreferencechangelistener-not-being-called-consistently/3104265#3104265] [ 2] [1]:http://stackoverflow.com/questions/3799038/onsharedpreferencechanged-not-fired-if-change-occurs-in-separate-activity [2]:HTTP://計算器.com/questions/2542938/sharedpreferences-onsharedpreferencechangelistener-not-being-called-consistent/3104265#3104265 – San 2012-04-14 03:37:56

回答

15

最有可能的是,它正在被gc收集垃圾。我以前遇到過這個問題。創建一個全局變量,以保持對偵聽器的強烈引用。

OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() { 
     public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { 
     // Implementation 
     } 
    }; 

SharedPreferences.onSharedPreferenceChangeListener not being called consistently答案解釋它最好

+0

我試過這樣做......但仍然不能正常工作!當我改變我的服務運行在相同的過程中一切工作正常.....我猜onChangeListener無法檢測到其他進程所做的更改... – 2012-04-14 07:18:51

+1

這個監聽器將是過程中的一部分,它是就像它在上下文中所做的那樣創建。您可能需要在其他進程中實現另一個偵聽器。 – Akhil 2012-04-14 07:21:21

+0

在其他過程中實現偵聽器後,如何刷新當前視圖。我的意思是我的當前活動與onChangeListener在其他一些過程中的交互作用? – 2012-04-14 15:18:15

相關問題