Android自定义首选项:在哪里放置代码进行清理?

时间:2015-05-24 17:17:26

标签: android design-patterns sharedpreferences preference resource-cleanup

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

有什么想法吗?

0 个答案:

没有答案