如何从SharedPreferences中删除一些键/值对?

时间:2011-11-07 08:19:06

标签: android

如何从SharedPreferences中删除一些键/值对?我已经把我和我从prefs中删除了。

6 个答案:

答案 0 :(得分:191)

SharedPreferences mySPrefs =PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mySPrefs.edit();
editor.remove(String key);
editor.apply();

这里的编辑器是sharedPreferences编辑器。

答案 1 :(得分:12)

重要的是要注意,除非你计划用commit()调用的返回值做一些事情,否则绝对没有理由使用同步commit()调用而不是异步apply()调用

请记住,如果您从main / UI线程调用它,则UI将被阻塞,直到commit()完成。这可能需要大约100毫秒,因为申请大约需要5毫秒。这可能看起来不多,但如果在整个应用程序中不断完成,它肯定会加起来。

所以,除非你打算做这样的事情,否则希望在一个单独的线程上:

editor.remove(String key); 
boolean success = editor.commit();
if (!success) { 
    // do something 
}

你应该这样做:

editor.remove(String key); 
editor.apply();

答案 2 :(得分:9)

SharedPreferences.Editor.remove(key) 
commit();

答案 3 :(得分:7)

这很简单:

private SharedPreferences sharedPreferences() {
    return PreferenceManager.getDefaultSharedPreferences(mContext);
}

public void clearSharedPreferences() {
    sharedPreferences()
            .edit()
            .remove(SOME_KEY_1)
            .remove(SOME_KEY_2)
            .remove(SOME_KEY_3)
            .apply();
}

答案 4 :(得分:2)

以下是我解决这个问题的方法。

首先,我创建了一个SharedPreference实例

var params = {
    TableName: 'apps',
    ...
    FilterExpression: "#id IN (:one,:two)",: 
...

然后我将此sharedPreference用作

SharedPreferences mobilePreference;

这里“in.bhartisoftwares.amit.allamitappsthree”是我的包名,我使用的是Context.MODE_PRIVATE,因为我只想为这个包名操作这个共享首选项。

然后我将删除所选的sharedPreference(我的sharedPreference的键是mobileString),如下所示:

mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);

请参阅下面的代码:

mobilePreference.edit().remove("mobileString").commit();

答案 5 :(得分:1)

<强>信息

只需检查sharedpref课程已扩展为Map,这就是remove方法的原因

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.remove(String key);
editor.apply();

此编辑器是sharedPreferences编辑器。