您不需要实施OnSharedPreferenceChangeListener
. 这是一种方便的功能。
有时您想对偏好的变化立即做出反应。例如,如果您有一个“设置”操作,用户可以在其中更改活动的背景颜色,那么当用户进行选择时,您希望背景颜色立即更改,而不是在用户重新启动时更改活动。一种方法是让活动在 中检查背景偏好的状态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) {
. . .
}
}