删除共享首选项

如何删除我的应用程序的SharedPreferences数据?

我正在创build一个使用大量Web服务来同步数据的应用程序。 出于testing目的,我需要在重新启动应用程序时清除一些SharedPreferences值。

要删除特定的值: SharedPreferences.Editor.remove()后跟一个commit()

要删除所有的SharedPreferences.Editor.clear()后跟一个commit()

如果你不关心返回值,而是从应用程序的主线程使用这个函数,那么可以考虑使用apply()

我的解决scheme

 SharedPreferences preferences = getSharedPreferences("Mypref", 0); preferences.edit().remove("shared_pref_key").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(); 

如果没有必要每次都删除,可以从以下位置手动删除它:设置 – >应用程序 – >pipe理应用程序 – >(select您的应用程序) – >清除数据或卸载

在一行中删除Android共享首选项:-)

 context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit(); 

apply非阻塞asynchronous操作:

 this.getSharedPreferences("YOUR_PREFS", 0).edit().clear().apply(); 

即使没有固定电话,您也可以使用adb shell来完成此操作。 唯一的问题是应用程序必须是可debugging的。

 run-as <your package name> <command> 

例如:

 run-as com.asdf.blah rm /data/data/com.asdf.blah/databases/myDB.db 

另外,你也可以做上面的事情,但是没有命令会引导你到应用程序包根目录,并允许你在应用程序的上下文中执行更多的命令。

似乎所有的解决scheme都不是完全正常工作或已经死亡

清除活动中的所有SharedPreferences

  PreferenceManager.getDefaultSharedPreferences(getBaseContext()). edit().clear().apply(); 

在onCreate之后,从主要活动中调用它

注*我使用

 .apply() 

代替

 .commit() 

你可以自由select提交();

 Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit(); editor.clear(); editor.commit(); 

试试这个代码:

 SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE); SharedPreferences.Editor edit = sharedPreferences.edit(); edit.clear().commit(); 
  PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply(); 

//清除所有

您也可以使用您的设备手动卸载您的应用程序。 然后,当你重新安装你的应用程序,共享首选项已被重置。

在类定义中

 private static final String PREFERENCES = "shared_prefs"; private static final SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE); 

在课堂上

 public static void deleteAllSharePrefs(){ sharedPreferences.edit().clear().commit(); } 

截至API 24(牛轧糖),你可以做:

 context.deleteSharedPreferences("YOUR_PREFS"); 

但是,没有向后兼容性,所以如果你支持小于24的任何东西,坚持:

 context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply(); 

清除所有类中的所有SharedPreferences:

 public static SharedPreferences.Editor getEditor(Context context) { return getPreferences(context).edit(); } 

然后从任何类:(提交返回布尔值,你可以检查你的首选项是否清除)

  Navigation.getEditor(this).clear().commit(); 

或者:你可以使用Apply:它将返回void Navigation.getEditor(this).clear()。apply();

你可以use-> preferences.edit().remove("key").commit(); 从共享首选项中删除保存的值。

今天早上刚刚做了这个。 从命令提示符处:

 adb shell cd /data/data/YOUR_PACKAGE_NAME/shared_prefs rm * // to remove all shared preference files rm YOUR_PREFS_NAME.xml // to remove a specific shared preference file 

注意 :这需要根植设备,如股票Android虚拟设备,Genymotion设备或实际的固定手机/平板电脑等。

在开发/testing的时候最快的方法就是去做

adb卸载

例如:$ adb uninstall com.example.myappname