2012-04-14 9 views
5

Ho registrato registerOnSharedPreferenceChangeListener con il mio SharedPreferences nella mia attività. Quando cambio i dati salvati con il servizio interno SharedPreferences in esecuzione in processi diversi, onSharedPreferenceChanged non viene chiamato!registerOnSharedPreferenceChangeListener non funziona per le modifiche apportate in diversi processi

Cosa devo fare per chiamare Android onSharedPreferenceChanged?

+0

servono ulteriori informazioni ... anche controllare questo [http://stackoverflow.com/questions/3799038/onsharedpreferencechanged-not-fired -se-cambio-verifica-in-separata-activity] [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: // StackOverflow .com/questions/2542938/sharedpreferences-onsharedpreferencechangelistener-not-being-called-consistent/3104265 # 3104265 – San

risposta

15

Molto probabilmente, si tratta di dati raccolti da gc. Ho affrontato questo problema prima. Crea una variabile globale che mantenga un duro riferimento per l'ascoltatore.

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

La risposta a SharedPreferences.onSharedPreferenceChangeListener not being called consistently spiega che la cosa migliore

+0

Ho provato a farlo ... ma ancora non funziona! Mentre cambio il mio servizio per essere eseguito nello stesso processo, tutto funziona correttamente ..... Immagino che onChangeListener non sia in grado di rilevare le modifiche apportate da altri processi .... –

+1

questo listener sarebbe parte del processo in cui era creato come sarebbe fatto nel suo contesto. potrebbe essere necessario implementare un altro listener in un altro processo. – Akhil

+0

Dopo aver implementato il listener in un altro processo, aggiornerò la vista corrente. Intendo Interazione della mia attività corrente da onChangeListener in qualche altro processo? –

Problemi correlati