を実装する必要はありませんOnSharedPreferenceChangeListener
。利便性のために存在する機能です。
設定の変更にすぐに対応したい場合があります。たとえば、ユーザーがアクティビティの背景色を変更できる「設定」アクションがある場合、ユーザーが選択を行ったときに、ユーザーが再起動したときではなく、すぐに背景色を変更したいとします。アクティビティ。これを行う 1 つの方法は、アクティビティが でバックグラウンド設定のステータスを確認することですonResume()
が、別の方法は、アクティビティが および に登録するOnSharedPreferenceChangeListener
( でonStart
登録を解除するonStop
) ことです。このようにリスナーを使用すると、コードが単純になる場合があることがわかりました。また、設定の変更に反応する必要があるコードが通常、フレームワークのライフサイクル メソッドに参加しない場合にも大いに役立ちます。
の実装OnSharedPreferenceChangeListener
は非常に簡単です。クラスを宣言するかimplements OnSharedPreferenceChangeListener
、オブジェクトを実装する必要があります。例えば:
public class MyActivity extends Activity {
. . .
private final OnSharedPreferenceChangeListener mPrefsListener =
new OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key)
{
if (key.equals(IMPORTANT_PREF_KEY)) {
setImportantValue(sharedPrefs.getInt(IMPORTANT_PREF_KEY, -1));
}
}
};
@Override
protected void onStart() {
super.onStart();
PreferenceManager.getDefaultSharedPreferences(this)
.registerOnSharedPreferenceChangeListener(mPrefsListener);
}
@Override
protected void onStop() {
super.onStop();
PreferenceManager.getDefaultSharedPreferences(this)
.unregisterOnSharedPreferenceChangeListener(mPrefsListener);
}
void setImportantValue(int value) {
. . .
}
}