【发布时间】:2018-11-17 05:31:55
【问题描述】:
在我的 Android 应用程序中,我使用一组随机生成的文件名来存储一些数据。为了确保在应用程序重新启动时生成相同的文件名集 - 并且对于每个应用程序安装都不同 - 我通过从一长串随机字母数字字符中选择名称作为子字符串开始该过程,我在应用程序已安装。后一个字符串存储在共享首选项中。
在测试应用程序时,我遇到了一个相当特殊的问题。我不时进行重大更改,因此我完全卸载该应用程序 - 甚至强制关闭它+清除其所有数据。那时我希望设备在重新安装时不会对应用程序有“先验知识”。然而我发现 Shared Preferences 字符串以某种方式被“记住”了。如果在此期间我更改了从存储的共享首选项字符串中提取文件名子字符串的方式,这将导致严重破坏。
我如何确保该应用程序的先前安装版本的“零内存”随后被卸载?
我过去使用的一个解决方案是指示 Android 不要通过清单文件 android:allowBackup = "false" 进行任何备份。但是,我已经放弃了这个想法,因为除非我弄错了,否则这实际上意味着当用户决定更换手机时,我会阻止他们将他们的应用程序移植到新设备上。
【问题讨论】:
-
我们遇到了同样的问题,并由
AndroidManifest.xml.中的android:allowBackup="false"解决,现在用新设备试试,应该已经解决了。我不知道它是如何工作的。 -
感谢您的评论。我稍微改变了我的问题。我曾尝试过
android:allowBackup方法,但发现它会引发我现在解释的其他问题。 -
我刚刚看到这些 cmets 和您更新的问题。我会修改我的答案。