我只是想知道,假设我在android应用中存储了一些内容,例如-在“共享首选项”中,并且假设应用的当前版本为n
,而在更新版本(n + 1)
中,我更改了数据类型的共享首选项对象从List<String>
到List<Object>
,并且在下一个更新的版本(n+2)
中,当用户离开时,我已将对象的数据类型更新为List<Double>
要玩商店更新他/她的应用程序,那么以前的数据就在那里,所以我必须自己编写一些代码,如果以前的版本是n
而当前的版本例如是-(n+2)
,那么我将通过编写if-else
来检查旧版本,相应地更改代码中“共享首选项”中的值。
在Playstore上更新任何android应用时,开发人员所使用的方法是否超出上述范围?
还有什么可能性,例如用户当前安装了(n+2)
版的我的应用程序,现在用户希望下载我的应用程序的任何旧版本,例如版本n
,现在是否有可能用户将能够安装此版本n
的应用程序,同时还可以恢复版本(n+2)
的数据,因为如果发生这种情况,那么就像我的版本n
的代码一样,将没有{{ 1}}将对象的数据类型从if-else
更改为List<double>
吗?
我是新手,从来没有在Playstore上放过任何应用程序,只是去了,这就是为什么要问这个问题。
谢谢
答案 0 :(得分:1)
如果我要完全更改属于某个首选项键的Object的类型,然后将其发布到生产环境中,那么我将只更改用于避免更新它的麻烦的键有条件的。确实,这根本不是应该发生的事情。如果您要大刀阔斧地进行更改,那么用户使用它的任何方式都不会高兴。
要回答第二个问题,您不能将Android应用程序降级,即直接从versionCode 3转到versionCode 2。唯一的方法是首先卸载当前版本,从而清除所有SharedPreferences,然后安装旧版本。如果您使用的是Google提供的备份功能,则可能会恢复首选项,这使我回到第一点:如果您要进行大量更改,只需更改您使用的密钥即可。
(由于我所描述的原因,Google Play不允许用户降级。它将为用户提供与其设备兼容的最新版本。)
答案 1 :(得分:1)
不用担心降级的情况,因为Google Play不支持它。即使用户手动尝试降级(即,您直接与该用户共享.apk),仍然会清除共享的偏好设置。
没有共享首选项的迁移逻辑,就像我们对数据库的迁移逻辑一样。因此,这必须手动完成。
我的建议是使用其他密钥,而不要使用if else
。始终执行此操作,因为我更喜欢保持代码整洁,而不是共享首选项文件。