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

如何从SharedPreferences中删除一些键/值对? 我已经把我从首选项中删除。

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

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

需要注意的是,除非您打算使用commit()调用的返回值进行操作,否则绝对没有理由使用同步commit()调用而不是asynchronousapply()调用。

请记住,如果您从主/ 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(); 

这是我如何解决这个问题。

首先我创build了一个SharedPreference的实例

 SharedPreferences mobilePreference; 

那么我使用这个sharedPreference作为

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

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

然后我删除所选的sharedPreference(我的sharedPreference的key是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编辑器。