私が管理しているいくつかのコードで、共有設定変更リスナーを登録する 2 つの異なる方法に気付きました。
(1) 登録されたメンバー関数を含むクラスがSharedPreferences.OnSharedPreferenceChangeListenerを実装する単純なアプローチ。
preferences.registerOnSharedPreferenceChangeListener(mImageView);
(2) 登録されたメンバー関数を含む可能性のあるクラスが何らかの理由でSharedPreferences.OnSharedPreferenceChangeListenerを実装しないことを好み、代わりにこのリスナー専用のまったく新しいクラスを定義してインスタンス化することを選択する間接的なアプローチ:
SharedPreferences.OnSharedPreferenceChangeListener mPreferencesListener =
new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
// do here what's needed to do
}
};
....
preferences.registerOnSharedPreferenceChangeListener(mPreferencesListener);
どちらもうまく機能しますが、今は疑問に思っています:一方のアプローチが他方よりも好ましいですか?
これら 2つのアプローチのうちの 1 つだけを実際に使用できる状況はありますか?