【问题标题】: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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-10
      • 2013-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多