如何删除应用程序的SharedPreferences数据?
我正在创建一个使用许多网络服务同步数据的应用程序。出于测试目的,当我重新启动应用程序时,我需要清除一些SharedPreferences值。
如何删除应用程序的SharedPreferences数据?
我正在创建一个使用许多网络服务同步数据的应用程序。出于测试目的,当我重新启动应用程序时,我需要清除一些SharedPreferences值。
移除特定的值:使用SharedPreferences.Editor.remove() 方法,然后调用 commit()
移除所有值:使用 SharedPreferences.Editor.clear()
方法,然后调用 commit()
如果您不关心返回值且在应用程序的主线程中使用此方法,请考虑使用apply()
。
我的解决方案:
SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
移除所有偏好设置:
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().clear().commit();
删除单个偏好设置:
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().remove("KeyName").commit();
KeyName
会是什么? - hasnain_ahmad如果不必每次删除,您可以手动从以下位置删除:
设置 -> 应用程序 -> 管理应用程序 -> (选择您的应用程序) -> 清除数据或卸载
较新版本的Android:
设置 -> 应用程序 -> (选择您的应用程序) -> 存储 -> 清除数据和清除缓存
一行代码删除Android Shared Preferences :-)
context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit();
或者使用 apply
来进行非阻塞式异步操作:
this.getSharedPreferences("YOUR_PREFS", 0).edit().clear().apply();
似乎所有的解决方案都不完全有效或已经过期
清除 Activity 中的所有 SharedPreferences
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().clear().apply();
在 onCreate 方法之后,从主 Activity 调用此方法。
注:我使用了 .apply()
,而不是 .commit()
,您可以自由选择 commit();
从API 24(Nougat)开始,您只需执行以下操作:
context.deleteSharedPreferences("YOUR_PREFS");
然而,没有向后兼容性,所以如果您要支持低于24的任何内容,请坚持使用:
context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply();
private static final String PREFERENCES = "shared_prefs";
private static final SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);
类内部:
public static void deleteAllSharedPrefs(){
sharedPreferences.edit().clear().commit();
}
即使您的手机没有 root 权限,也可以使用 adb shell 进行此操作。唯一的限制是应用程序必须支持调试模式。
run-as <your package name> <command>
例如:run-as com.asdf.blah rm /data/data/com.asdf.blah/databases/myDB.db
或者,您可以直接按照上述步骤操作,但不使用该命令,这将使您直接进入应用程序包根目录,并允许您在应用程序的上下文中执行更多命令。
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();