如何从SharedPreferences中删除一些键/值对?我已经放了,我要从偏好中删除它。
Answers:
SharedPreferences mySPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mySPrefs.edit();
editor.remove(key);
editor.apply();
这里的编辑器是sharedPreferences编辑器。
需要特别注意的是,除非您打算使用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();
SharedPreferences.Editor.remove(key)
commit();
很简单:
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();
}
这是我解决此问题的方法。
首先,我创建了一个SharedPreference实例
SharedPreferences mobilePreference;
然后我用这个sharedPreference作为
mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
这里的“ in.bhartisoftwares.amit.allamitappsthree”是我的软件包名称,并且我正在使用Context.MODE_PRIVATE,因为我只想对此软件包名称使用此共享首选项。
然后,我删除所选的sharedPreference(我的sharedPreference的键是mobileString),如下所示:
mobilePreference.edit().remove("mobileString").commit();
请参阅下面的完整代码:
SharedPreferences mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
mobilePreference.edit().remove("mobileString").commit();
信息
只是将检查sharedpref
类扩展到了Map
这就是为什么有remove
方法的原因
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.remove(String key);
editor.apply();
这里的编辑器是sharedPreferences编辑器。