我正在创建一个自定义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()
使用对 the 的调用来补充对 the 的调用是一个好主意:unregisterOnSharedPreferenceChangeListener()
onPause()
为了在活动中进行正确的生命周期管理,我们建议您分别在 onResume() 和 onPause() 回调期间注册和取消注册 SharedPreferences.OnSharedPreferenceChangeListener:
由于Preference
不提供onPause()
覆盖方法,我想知道在自定义实现的情况下我应该调用的最佳替代方法是什么?unregisterOnSharedPreferenceChangeListener()
Preference
例如,有方法onPrepareForRemoval()
和onSaveInstanceState()
方法,但我不确定其中之一是否适合将清理代码放入其中。
有什么想法吗?