【问题标题】:SharedPreferences not reset on reinstall重新安装时未重置 SharedPreferences
【发布时间】:2017-01-23 14:43:07
【问题描述】:
我有一个 SharedPreference 来计算我的应用程序的启动次数。当我安装我的应用程序时,我希望这是 0。然而它是 14。我在我的数据库中观察到的同样奇怪的行为已经存在于全新安装中。
我无意回收我的应用数据(例如在 Google Cloud 中)。在我的设备上的帐户设置中,应用数据同步已打开。如果我将其关闭并重新安装,我会观察到相同的行为。
任何人都观察到这样的行为?有什么方法可以防止回收旧数据并强制正确安装?
【问题讨论】:
标签:
android
sharedpreferences
【解决方案1】:
在 Android Marshmallow 中,Google 引入了“自动备份”功能,如果您的 targetSdkVersion 为 >=23,该功能默认开启。
这将默认备份您的数据库和 SharedPreferences,并在您重新安装应用程序时恢复它。要关闭此功能,您必须将 android:allowBackup="false" 添加到您的 AndroidManifest.xml。
更多信息在这里:Auto Backup for Apps
【解决方案2】:
在标记应用程序的 AndroidManifest 中检查您的代码(如果它具有 android:allowBackup="false")。如果您没有(默认情况下为 true),您的应用会参与 android 备份和恢复基础架构,并且可以完全按照您所说的进行。
更多信息在这篇文章中:What is "android:allowBackup"?
【解决方案3】:
这需要从应用程序端处理共享首选项。
创建了一个共享偏好助手类,并且在助手类中具有以下条件。
private static String SHARED_PREFS_VERSION = "SharedPrefsVersion"; // In this save the version of current shared Prefs.
void SharedPrefsHelper() {
if( BuildConfig.Version > getSharedPrefsVersion() ) {
SharedPreferences.Editor editor = prefs.edit(); editor.clear(); // Clear all the shared Prefs and update the current version.
SetSharedPrefsVersion(BuildConfig.Version);
}
}
更多参考请看:
https://stackoverflow.com/a/12381061/7364024