我一整天都在研究这个问题。以下是要点:
- 共享首选项should当用户更新应用程序时保持持久性
- 就我而言,更新应用程序后,它们丢失了
- 这个问题每次都会重现(我从 Play 商店安装旧的 APK,然后
adb install -r new.apk
使用新的(更新、签名、版本代码递增)APK)
8小时后
为了进行测试,我更改了 SharedPrefs 文件名new.apk
(SP2.xml)并且更新后,旧的 SharedPrefs 文件来自old.apk
(SP.xml) 被删除了!这是 adb shell 输出:
adb install old.apk
adb shell "su -c 'ls /data/data/com.pkg.name/shared_prefs'"
:
CRC.xml
adb install -r new.apk
adb shell "su -c 'ls /data/data/com.pkg.name/shared_prefs'"
:
CRC2.xml(CRC.xml 丢失!)
我的 SharedPreferences 单例类(初始化:SharedPrefs.init(getApplicationContext());
):
public final class SharedPrefs {
private static SharedPrefs sp;
private SharedPrefs() {
}
public static void init(Context context) {
if (sp == null)
sp = context.getSharedPreferences("CRC2", Context.MODE_PRIVATE);
}
public static void saveString(String name, String value) {
sp.edit().putString(name, value).apply();
}
public static String getString(String key, String defaultValue) {
sp.getString(key, defaultValue);
}
...
}
所以基本上我失去了 SharedPreferences 并且我不知道为什么。请帮忙,欢迎任何提示!
如果您更改了清单文件的应用程序部分中的属性,则会发生此错误,并且 90% 的情况下,共享首选项数据将被重置。这是我在 Play 商店应用程序顶部安装签名 apk 的测试中发现的。不确定如果该应用程序是从 Play 商店作为更新安装的,会发生什么,但我很确定在这种情况下数据也会丢失。
编辑-我重新发布了该应用程序并进行了多次测试。这其实就是问题所在。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)