重新安装时不重置SharedPreferences

时间:2017-01-23 14:43:07

标签: android sharedpreferences

我有一个SharedPreference计算我的应用程序的启动量。当我安装我的应用程序时,我希望它为0。然而它是14.我在数据库中观察到的同样奇怪的行为,已经存在于全新安装中。

我无意回收我的应用数据(例如在Google Cloud中)。在我的设备帐户设置中,应用数据同步功能已开启。如果我将其关闭,并重新安装,我会发现同样的行为。

任何人都观察到这样的行为吗?有没有办法阻止回收旧数据并强行安装?

3 个答案:

答案 0 :(得分:7)

在Android Marshmallow中谷歌推出了“自动备份”功能,如果您的targetSdkVersion为> = 23,则默认情况下该功能处于启用状态。

这将默认备份您的数据库和SharedPreferences,并在重新安装应用程序时将其还原。要关闭此功能,您必须将android:allowBackup="false"添加到AndroidManifest.xml

此处有更多信息:Auto Backup for Apps

答案 1 :(得分:0)

如果它有android:allowBackup =“false”,请在AndroidManifest上检查标记应用程序中的代码。如果您没有(默认情况下是这样),您的应用程序将参与Android备份和恢复基础架构,并且可能完全符合您的要求。

此帖中的更多信息:What is "android:allowBackup"?

答案 2 :(得分:0)

这需要从app端处理有关共享Prefs的信息。

创建了一个共享首选项助手类,并且在helper类中具有以下条件。

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