2011-08-30 94 views
1

我已根据文档实施了BackupAgentHelper,包括1.6的向后兼容性,以备份我的所有SharedPreferences。在仿真器Android 2.2中进行测试时,以及在通过USB运行Android 2.3.3的设备上运行时,它工作得很好。在这两个测试案例中,我发出:adb shell bmgr run,这会触发备份。从Android Market重新安装时无法使BackupAgent正常工作

但是,当从Android Market重新安装我的应用时,所有SharedPreferences都消失了。 之后,文档中提到dataChanged()已被调用,“备份管理器随后在适当的时候调用备份代理的onBackup()方法”。很好,但是有谁知道是什么让系统实际进行备份?我怀疑这不是发生在我的情况。

该文档说:“如果使用设备,打开系统设置,选择隐私,然后启用备份我的数据和自动恢复。”但是我的设备中没有这个选项(SE Xperia Mini)。我只能猜测这个选项总是被启用并且不能被关闭。 我在瑞典使用Telia作为我的运营商(如果有问题的话)。

任何人都知道为什么当从市场重新安装时,备份不工作,但使用模拟器和通过USB在设备上完全正常工作?

+0

我认为没有选项实际上表明相反 - 不支持备份。在我的HTC Desire上,官方ROM显示没有备份选项(并且备份不起作用),但使用Cyanogenmod时,我看到选项。 –

回答

0

我以前使用Market时测试功能的尝试是通过一个(相对较快?)的顺序完成的。我在SharedPreferences中更改了一些参数后,甚至重新启动了手机,然后卸载了我的应用程序,认为关机会触发待定备份同步操作。不幸的是,这并没有触发到备份服务器的同步,并且SharedPreferences丢失了。

现在是好的和翔实的部分。在卸载我的应用程序之前,我更改了一些SharedPreferences并让手机保留了几个小时。下次我从市场上安装它时,SharedPreferences从云备份恢复!所以解决方案就是让“未来的适宜时间”成为现实。我不喜欢这种行为,但可以接受它,因为我意识到每次调用dataChanged()时都不能同步到服务器。

至少现在我们知道,即使您的设备上不存在隐私下的“备份我的数据和自动恢复”选项,它仍会使用BackupAgent执行备份。它只需要一些(未定义数量的)时间来做到这一点。

相关问题