Application之属性restoreAnyVersion

本文探讨了在Android应用更新版本时,备份管理器如何处理不同版本之间的数据恢复,强调了restoreAnyVersion属性的重要性及其对应用程序版本兼容性的潜在风险。

这个属性是指允许恢复任意版本的备份数据来恢复应用程序的数据。将该属性设置为true,则将允许备份管理器尝试恢复操作,有的时候版本不匹配表明数据是不兼容的,这个时候如果可以恢复到不同版本的数据,那么应用程序将承受很大的风险,所以请谨慎使用此属性!

这个属性必须是布尔值,true或者false!

下面举个例子:

我们写一个应用程序名为project,在Androidmanifest中versionCode写2,说明project的版本号是2.并且我们设置其restoreAnyVersion为false(或者不配置该属性,因为默认为false)。

接下来安装project.apk并执行一次备份工作,至此系统已经对应用程序完成了一次备份。备份之后,我们将project卸载,再修改AndroidManifest中versionCode的值为1,再重新将project安装到手机上。这时候该应用程序版本为1(版本号降低了)。由于版本号降低会影响到恢复功能的执行。备份管理服务检查到备份版本高于当前安装版本,此时Android备份系统就跳过这个应用程序的恢复过程,在日志中提示“no more packages to restore"。

接下来我们再次卸载project,并将AndroidManifest中的restoreAnyVersion的值设为true,再次重新安装该应用程序,在日志中我们可以看到Android备份系统发现了原来备份的数据(版本为2),但是安装的应用程序为1,这时备份系统会去检查师傅哦设置了restoreAnyVersion=true,如果已经进行了这样子的设置,那么Android系统就依然进行一次恢复操作。


上述讲的是从高版本到低版本的过程,会随着restoreAnyVersion不同而改变。

但是如果是从低版本到高版本呢?

无论restoreAnyVersion设置为什么,因为程序的版本不断升高,Android备份系统都会为其进行一次备份恢复操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值