2

OnSharedPreferenceChangeListenerオブジェクトの登録/登録解除について 2 つの質問があります。

質問 1 :共有設定の変更を適切に登録および登録解除するには、 SharedPreferencesオブジェクトの同じインスタンスでregisterOnSharedPreferenceChangeListenerunregisterOnSharedPreferenceChangeListenerを呼び出す必要がありますか? それとも、同じ設定ファイルに対して取得された 2 つのSharedPreferencesインスタンスで 2 つのメソッドを呼び出すだけで十分ですか?

質問 2 : registerOnSharedPreferenceChangeListenerに渡されるOnSharedPreferenceChangeListenerインスタンスは、 unregisterOnSharedPreferenceChangeListenerに渡されるインスタンスとまったく同じでなければなりません。つまり、2 つのメソッドに対してnew OnSharedPreferenceChangeListener() { ... }を使用してその場で新しいインスタンスを作成することはできませんか?

質問 3 : 複数のOnSharedPreferenceChangeListenerオブジェクトを登録できますか?

4

1 に答える 1

2

SharedPreferences のリスナーであるインターフェイスは、OnSharedPreferenceChangedListener を「実装」する単なるクラスです。これは、このクラスが、SharedPrefs が送信するメッセージを処理できることを意味します。

したがって、どのインスタンスを登録しても、同じ参照を使用して登録を解除する必要があります。

Q1) はい。sharedpreferences が範囲外になる前に登録解除します。つまり、onCreate で登録し、onPause で登録解除します。

Q2) はい、できません。新しいインスタンスを作成すると、まったく新しいオブジェクトが作成されます。

Q3)ソース実装をチェックして、クラスがレジスタのリストを保持しているかどうか、または 1 つだけを許可しているかどうかを確認する必要があります。(regとunregがあると、複数のリスナーを設定できると信じていますが、チェックしてください)

于 2012-05-22T21:39:57.913 に答える