RegisterOnSharedPreferenceChangeListener does not work for changes made in different processes

I registered registerOnSharedPreferenceChangeListenerwith mine SharedPreferencesin my work. When I modify the data saved using the SharedPreferencesinside of a service running in another process, onSharedPreferenceChangedit is not called!

What to do to make an android call onSharedPreferenceChanged?

+5
source share
1 answer

This is most likely garbage collected by gc. I used to run into this problem. Create a global variable that maintains a hard link to the listener.

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

The answer to SharedPreferences.onSharedPreferenceChangeListener is not called sequentially explains it better

+15
source

All Articles