我已经查看了文档和示例 BackupRestore 应用程序,并编写了自己的测试应用程序来实现android:backupAgent
。我延长了BackupAgent
类,因为我主要关心的是能够从数据库备份数据。我似乎甚至无法让一个简单的概念验证应用程序使用此功能。
为了使事情变得异常简单,我宣布android:backupAgent
as MyBackupAgent
在清单中。然后我创建了一个类 MyBackupAgent.java,扩展BackupAgent
。然后我为onBackup()
and onRestore()
内的方法MyBackupAgent
类,就像示例和文档中一样。我添加了一个Log.i()
调用每个函数的最开头,以便我可以在 LogCat 中识别函数何时被调用。同样,我在这两者上设置了断点。然后我继续实现我的代码来备份数据库。
我使用 2.2w/Google API 创建了一个模拟器映像,甚至在“帐户和同步”下添加了一个 Gmail 帐户。运行 adb 命令来启用bmgr
,备份应用程序,运行备份,卸载应用程序,重新安装应用程序等等...我从来没有在日志文件中收到过来自Log.i()
命令在任一onBackup()
or onRestore()
功能。
我在运行 2.2 的 Evo 4g 上再次尝试。相同的结果。备份管理器似乎没有调用onBackup()
and onRestore()
中的函数MyBackupAgent
class.
我在日志中收到的唯一奇怪的消息是来自BackupManagerService
声明“备份通过但 e=true p=false”,我相信这是对备份应用程序的 ADB 命令的响应。
有什么建议么?我是否错误地假设Log.i()
中的声明onBackup()
and onRestore()
函数会出现在 LogCat 中吗?
输出Backup pass but e=true p=false
表示备份管理器已启用(e=true
)但未配置(p=false
).
仅当满足这两个条件时,它才会运行备份。因此,由于某种原因,您的模拟器映像上没有配置备份管理器,在深入研究代码后,我注意到它应该在启动期间自动配置(默认活动)
I/ActivityManager( 73): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.android.sdksetup/.DefaultActivity } from pid 0
我刚刚创建了一个新的模拟器映像,它在那里运行没有问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)