应用程序更新后共享首选项丢失

2023-11-23

我一整天都在研究这个问题。以下是要点:

  • 共享首选项should当用户更新应用程序时保持持久性
  • 就我而言,更新应用程序后,它们丢失了
  • 这个问题每次都会重现(我从 Play 商店安装旧的 APK,然后adb install -r new.apk使用新的(更新、签名、版本代码递增)APK)

8小时后

为了进行测试,我更改了 SharedPrefs 文件名new.apk (SP2.xml)并且更新后,旧的 SharedPrefs 文件来自old.apk (SP.xml) 被删除了!这是 adb shell 输出:

  1. adb install old.apk

  2. adb shell "su -c 'ls /data/data/com.pkg.name/shared_prefs'": CRC.xml

  3. adb install -r new.apk

  4. 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(使用前将#替换为@)

应用程序更新后共享首选项丢失 的相关文章

随机推荐

  • iOS 应用程序验证错误:缺少 plist 密钥 CFBundleShortVersionString

    我用 SpriteBuilder 和 cocos2d 构建了一个 iOS 游戏 当我尝试将其提交到 AppStore 时 出现以下错误 错误 ITMS 9000 缺少 plist 密钥 Info plist 文件缺少所需的密钥 CFBund
  • Python 中返回 NoneType 的函数? [复制]

    这个问题在这里已经有答案了 在从事 CS1 的 Python 项目时 我遇到了一个我和我的室友都无法解决的奇怪问题 代码的一般范围是使用数字填充具有一定大小的形状的 0 网格来填充空间 并且我们必须一路检查以确保我们没有将形状放置在已经有形
  • JQuery JSTree - 添加工具提示

    有没有办法添加一个Tooltip to a JSTree节点 我想当用户将鼠标悬停在元素上时显示额外的信息 我对 JQuery 非常了解 所以对此可能有一个明显的答案 编辑 感谢下面的 zzzz 我能够弹出一个简单的悬停框 尽管将树的div
  • 如何检查div是否有id?

    div div class ui droppable one div div class ui droppable two div div class ui droppable three div div class ui droppabl
  • 创建 javadoc 时发生致命错误(无法找到包 java.lang)

    我尝试在 Linux 下使用 Eclipse Kepler 在我的 java 项目中运行 javadoc 但收到此错误 Constructing Javadoc information com sun tools javac util Fa
  • 我应该尽可能使用并行流吗?

    使用 Java 8 和 lambda 可以轻松地将集合作为流进行迭代 并且使用并行流也同样容易 两个例子来自the docs 第二个使用并行流 myShapesCollection stream filter e gt e getColor
  • 在 Sphinx 文档中保留包装/修饰的 Python 函数的默认参数

    我该如何更换 args and kwargs带有装饰函数文档中的真实签名 假设我有以下装饰器和装饰函数 import functools def mywrapper func functools wraps func def new fun
  • 为什么将条件应用于 IAM 策略中的 ec2:DescribeInstances 会失败?

    当尝试配置可以使用策略列出哪些实例时 我注意到以下问题 当条件未实现时 所有实例都是可见的 当任何条件被实现时 什么都看不到 包含有条件的示例策略 Version 2012 10 17 Statement Sid Stmt146123588
  • 访问 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData

    谁能告诉我为什么我无法访问注册表项 HKEY LOCAL MACHINE SOFTWARE Microsoft Windows CurrentVersion Installer UserData 如果我查询GetSubKeysNames o
  • 优化 Jinja2 环境创建

    我的应用程序在 Google App Engine 上运行 由于 CPU 使用率高 大多数请求不断收到黄色标记 使用探查器 我将问题追溯到创建的例程jinja2 Environment实例 我正在模块级别创建实例 from jinja2 i
  • 为什么在 Intellij 中使用 Android SDK 时缺少 Android AVD Manager?

    I am trying to use the Android SDK in my IntelliJ project that is a larger project containing both web and ios clients a
  • Numpy:作为 Matlab 进行赋值和索引

    有时 分配仅具有一个索引的数组很有用 在 Matlab 中这很简单 M zeros 4 M 1 5 end 1 M 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 Numpy 有没有办法做到这一点 首先 我想展平数组 但该操
  • 最适合拼写检查器、字典和同义词库的算法和数据结构

    实施的最佳方式 字典 有没有比 Trie 更好的 DS 字典 同义词库 不知道 因为匹配的是单词的含义 相似的含义 拼写检查器 比哈希映射更好的东西 如果可能的话 提供正确的拼写建议 当在一小时的面试中被问到 我们是否需要为算法编写 c c
  • Android 搜索:使用 FTS 表以及普通 SQLite DB 表

    这更多的是一个设计问题 而不仅仅是一个编码问题 我已经有一个将数据存储在 SQLite DB 表中的应用程序 现在我想添加搜索功能 据我了解 为了启用搜索功能 我需要 FTS 表 我拥有的表格是 不完全相同 但给出了非常相似的示例 内容表
  • Android 音频:改变音调

    SoundPool 的 Android 文档称 该应用程序还可以通过实时调整多普勒或合成效果的播放速率来改变音调 所以我尝试这样做 使用 setRate 方法从一个音符平滑地变化到另一个音符 但结果很糟糕 声音变化非常参差不齐 这是我尝试过
  • MySQL 使用 CONCAT 条件进行选择

    我正在尝试在脑海中编译它 我有一个包含名字和姓氏字段的表 我有一个像 Bob Jones 或 Bob Michael Jones 这样的字符串以及其他几个字符串 问题是 例如我有 鲍勃的名字 以及 迈克尔 琼斯的姓氏 所以我想 SELECT
  • Java流是否有相当于带有变量赋值的while

    是否存在与以下内容等效的流 List
  • Tensorflow 从元图中打印所有占位符变量名称

    我有一个张量流模型 其中有 meta 和检查点文件 我试图打印模型所需的所有占位符 而不查看构建模型的代码 以便我可以在不知道模型是如何创建的情况下构建输入 feed dict 作为参考 这里是模型构建代码 在另一个文件中 def save
  • 优秀的 setjmp/longjmp 教程 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 你好 我想阅读有关 C 语言 setjmp longjmp 的优秀教程 如果有真实的而不是人造的示例 那就更好了 Thanks 这并不是一个真正的教程 而是libpng 文档描述该库
  • 应用程序更新后共享首选项丢失

    我一整天都在研究这个问题 以下是要点 共享首选项should当用户更新应用程序时保持持久性 就我而言 更新应用程序后 它们丢失了 这个问题每次都会重现 我从 Play 商店安装旧的 APK 然后adb install r new apk使用