gpt4 book ai didi

android - 摆脱偏好

转载 作者:行者123 更新时间:2023-11-30 04:44:49 25 4
gpt4 key购买 nike

有没有办法完全摆脱偏好?似乎 clear() 和 remove(key) 并没有完全摆脱偏好。如果您先调用 clear(),然后调用 SharedPreferences.contains("key"),它会返回 true。

请注意,我也执行 commit() 和 clear()。

最佳答案

下面是 clear() 的实现方式:

public Editor clear() {
synchronized (this) {
mClear = true;
return this;
}
}

public boolean commit() {
//...
synchronized (this) {
if (mClear) {
mMap.clear();
mClear = false;
}
}
//...
}

下面是 contains(String key) 的实现方式:

 public boolean contains(String key) {
synchronized (this) {
return mMap.containsKey(key);
}
}

可以自己看代码here . (请注意,当所有首选项都被清除时,首选项更改监听器不会被调用)。

在我看来,该实现没有问题,很可能是您的代码存在问题。这是我的简短示例应用程序,它验证 clear() 是否正常工作。

public class TestPrefClear extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.edit().putBoolean("TEST", true).commit();
if(!prefs.contains("TEST")){
throw new IllegalStateException();
}
prefs.edit().clear().commit();
if(prefs.contains("TEST")){
throw new IllegalStateException();
}
}
}

关于android - 摆脱偏好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5242976/

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