3

我正在创建一个自定义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()方法,但我不确定其中之一是否适合将清理代码放入其中。

有什么想法吗?

4

0 回答 0