删除除一个SharedPreference外的所有内容

时间:2014-04-30 18:06:45

标签: android sharedpreferences

我想清除除一个SharedPreference之外的所有内容。如果我已经保存了10+,那么有更好的方法然后逐个删除吗?这有点多余:

preferences.edit().remove("1").commit();
preferences.edit().remove("2").commit();
preferences.edit().remove("3").commit();
...
preferences.edit().remove("15").commit();

4 个答案:

答案 0 :(得分:7)

您还可以获取要保留的值clear(),并在提交之前重新添加。

答案 1 :(得分:6)

你可以遍历所有的密钥

Map<String,?> prefs = pref.getAll();
for(Map.Entry<String,?> prefToReset : prefs.entrySet()){
    edit.remove(prefToReset.getKey()).commit();
}

然后跳过你不想删除的键

答案 2 :(得分:0)

您可以在commit()之前多次调用remove()。

preferences.edit().remove("1").remove("2")....commit();

答案 3 :(得分:0)

你可以这样做 ->

private static void clearSp() {

    Map<String, ?> mapPref = sharedPrefObj.getAll();
    if (mapPref.containsKey("key_need_to_retain"))
        mapPref.remove("key_need_to_retain");

    for (Map.Entry<String, ?> prefToRemove: mapPref.entrySet())
        editor.remove(prefToRemove.getKey()).apply();

}