我想清除除一个SharedPreference之外的所有内容。如果我已经保存了10+,那么有更好的方法然后逐个删除吗?这有点多余:
preferences.edit().remove("1").commit();
preferences.edit().remove("2").commit();
preferences.edit().remove("3").commit();
...
preferences.edit().remove("15").commit();
答案 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();
}