2012-04-14 12 views
5

Zarejestrowałem się pod numerem registerOnSharedPreferenceChangeListener w mojej Aktywności SharedPreferences. Kiedy zmieniam dane zapisane przy pomocy SharedPreferences wewnątrz usługi uruchomionej w innym procesie, onSharedPreferenceChanged nie jest wywoływana!registerOnSharedPreferenceChangeListener nie działa w przypadku zmian wprowadzonych w innym procesie

Co należy zrobić, aby wykonać połączenie z Androidem onSharedPreferenceChanged?

+0

Potrzebujesz więcej informacji ... także sprawdzić [http://stackoverflow.com/questions/3799038/onsharedpreferencechanged-not-fired -W-przełączenia występuje w-selektywnej aktywności] [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 .pl/questions/2542938/sharedpreferences-onsharedpreferencechangelistener-not-being-called-consistently/3104265 # 3104265 – San

Odpowiedz

15

Najprawdopodobniej jest to śmieci zbierane przez gc. Już wcześniej miałem do czynienia z tym problemem. Stwórz globalną zmienną, która zachowuje twarde odniesienie do słuchacza.

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

Odpowiedź na SharedPreferences.onSharedPreferenceChangeListener not being called consistently wyjaśnia, że ​​najlepiej

+0

Próbowałem to zrobić ... ale wciąż nie działa! Gdy zmieniam moją usługę, by działała w tym samym procesie, wszystko działa dobrze ..... Chyba naChangeListener nie jest w stanie wykryć zmian dokonanych przez inny proces ... –

+1

ten słuchacz byłby częścią procesu, w którym był stworzone tak, jak byłoby zrobione w jego kontekście. może być konieczne wdrożenie innego programu nasłuchującego w innym procesie. – Akhil

+0

Po wdrożeniu detektora w innym procesie, odświeżę bieżący widok. Mam na myśli interakcję mojej obecnej aktywności z onChangeListener w jakimś innym procesie? –

Powiązane problemy