Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重构SharedReference键,但在Android中保留其值_Android_Refactoring_Sharedpreferences - Fatal编程技术网

重构SharedReference键,但在Android中保留其值

重构SharedReference键,但在Android中保留其值,android,refactoring,sharedpreferences,Android,Refactoring,Sharedpreferences,我已经向市场发布了我的应用程序,我正在准备更新 然而,我想重构一些共享首选项的键名,但保留用户设备上的当前值。另一件事是,我还想删除旧的密钥名(这样SharedReferences文件就不会被不必要的密钥污染) 如何在不给用户带来任何麻烦的情况下实现这一点?创建一个包含所有首选项的数组 创建一个包含所有新首选项的数组 然后创建并排列它们的所有值 然后调用SharedReferences.clear()。这将从首选项中完全删除所有键和值 该步骤将遍历所有值,并通过它们的新键将它们放回SharedR

我已经向市场发布了我的应用程序,我正在准备更新

然而,我想重构一些共享首选项的键名,但保留用户设备上的当前值。另一件事是,我还想删除旧的密钥名(这样SharedReferences文件就不会被不必要的密钥污染)


如何在不给用户带来任何麻烦的情况下实现这一点?

创建一个包含所有首选项的数组

创建一个包含所有新首选项的数组

然后创建并排列它们的所有值

然后调用SharedReferences.clear()。这将从首选项中完全删除所有键和值


该步骤将遍历所有值,并通过它们的新键将它们放回SharedReferences中。

我不认为将首选项键保留为XML字符串资源将有助于满足问题中描述的所有要求。我的意思是,这无助于保留以前的值。为此,我仍然需要执行与您描述的类似的操作在你的第一段中。还是我遗漏了什么?@RicardoAmaral我整理了我的答案。但我应该在检测到一个用户正在运行以前的版本并更新到新版本,其中某些首选项被更改时,才这样做,对吗?请注意,我也只谈论了一个首选项。我的应用程序没有首选项不过,我还没有时间编写代码。此首选项控制安装的最新版本(因此,如果用户更新到新版本,我可以在启动时显示更改日志)。这只是因为我喜欢遵循约定,即使它们是我自己的,我想重命名那个变更日志首选项。正确,只有当你检测到你的应用程序的旧版本时。除此之外,我上面说过的也可以。