RegisterOnSharedPreferenceChangeListener () is suitable for comparison

In some code that I support, I noticed two different ways of registering a regular change listener:

(1) A direct approach in which a class containing a registered member function implements a SharedPreferences.OnSharedPreferenceChangeListener .

preferences.registerOnSharedPreferenceChangeListener(mImageView);

(2) An indirect approach in which a class that could contain a registered member function prefers not to implement the SharedPreferences.OnSharedPreferenceChangeListener for some reason and instead chooses to define and instantiate an entire new class intended only for this listener:

SharedPreferences.OnSharedPreferenceChangeListener mPreferencesListener = 
  new SharedPreferences.OnSharedPreferenceChangeListener() {
    public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
      // do here what needed to do
    }
  };


....

preferences.registerOnSharedPreferenceChangeListener(mPreferencesListener);

Both work well, but now I'm wondering: is one approach preferable to the other?

, ?

+5
1

, , , ..

, , , , mPreferencesListener , , , , (, onPause, onDestroy ..) , / .

, , SharedPreferencesImpl WeakHashMap .

+1

All Articles