我正在创建自定义android.preference.Preference
,并且在构造函数中我需要为SharedPreferences
中的更改注册一个侦听器:
public class MyPreference extends Preference {
private final SharedPreferences.OnSharedPreferenceChangeListener mListener;
public MyPreference(final Context context, final AttributeSet attrs) {
super(context, attrs);
SharedPreferences sharedPref = ...;
mListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
// listener implementation
}
};
sharedPref.registerOnSharedPreferenceChangeListener(mListener);
}
根据docs,通过registerOnSharedPreferenceChangeListener()
方法调用unregisterOnSharedPreferenceChangeListener()
来补充对onPause()
的调用是个好主意:
为了在活动中进行适当的生命周期管理,我们建议您 注册并取消注册您的 在此期间的SharedPreferences.OnSharedPreferenceChangeListener onResume()和onPause()回调分别为:
由于Preference
没有提供覆盖的onPause()
方法,我想知道哪个是我应该调用unregisterOnSharedPreferenceChangeListener()
的最佳替代方法自定义Preference
实施的情况?
例如,有onPrepareForRemoval()
和onSaveInstanceState()
方法,但我不确定其中一个方法是否适合将清理代码放入其中。
有什么想法吗?