删除共享首选项
如何删除我的应用程序的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