gpt4 book ai didi

android - onSharedPreferenceChanged 多次调用....为什么?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:37 26 4
gpt4 key购买 nike

我有一个偏好 Activity ,起初当我有一个偏好时,onPreferenceChange 会按预期触发一次。

但是,一段时间后(去不同的 Activity 等) onPreferenceChange 被调用两次。

我在调试器中看到 mListener 的 WeakHashMap 一开始是 1,然后变得大于 1,但不确定为什么?

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getPrefs();
int preferencesResource = 0; // R.xml.preferences;
preferencesResource = getResources().getIdentifier("pref", "xml",
getPackageName());
addPreferencesFromResource(preferencesResource);
listener = new SharedPreferences.OnSharedPreferenceChangeListener() {

@Override
public void onSharedPreferenceChanged(SharedPreferences arg0,
String arg1) {
// Why is this called once then sometimes twice!!
Log.i("PreferencesActivity", "OnPreferenceChanged()");
}
};
prefs.registerOnSharedPreferenceChangeListener(listener);
}

protected void onDestroy() {
super.onDestroy();
listener = null;
prefs.unregisterOnSharedPreferenceChangeListener(listener);
prefs = null;
}

public Preferences getPrefs() {
if (prefs == null) prefs = new Preferences(this);
return prefs;
}

最佳答案

您已将 unregisterOnSharedPreferenceChangeListener() 放在 onDestroy() 中,并且不会在所有 Activity 重新启动时调用它。

查看activity lifecycle diagram .结论是,正确的方法是将 registerOnSharedPreferenceChangeListener()unregisterOnSharedPreferenceChangeListener() 放在 onResume()onPause() 中 分别。

关于android - onSharedPreferenceChanged 多次调用....为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5659742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com