我已完成以下操作以使SQLite数据库备份/还原工作。
(1)从Google注册。
[http://developer.android.com/google/backup/signup.html][1]
(2)将密钥添加到Manifest xml文件
<application>
<meta-data android:name="com.google.android.backup.api_key"
android:value="backup_service_key_from_google" />
...
</application>
(3)在XML文件中添加我的后台代理
<application
android:allowBackup="true"
android:label="@string/app_name"
android:theme="@style/AppTheme"
...
android:backupAgent="MyBackupAgent" android:restoreAnyVersion="true"
>
(4)创建一个名为MyBackupAgent的类
class MyBackupAgent extends BackupAgentHelper{
@Override
public void onCreate(){
FileBackupHelper dbs = new FileBackupHelper(this, "../databases/"+SQLHelp.dbName);
addHelper(SQLHelp.dbName, dbs);
}
}
(5)调用备份管理器进行备份
BackupManager mBackupManager = new BackupManager(this);
mBackupManager.dataChanged();
在第5步之后,我没有看到任何事情发生。我在MyBackupAgent中设置了一个断点。 onCreate()函数中没有任何内容停止。
有什么建议吗?
答案 0 :(得分:1)
可能你根本没有等待足够长的时间。从文档中引用对dataChanged的调用:
此调用通知备份管理器已准备好数据 备份到云端。在将来的某个时刻,备份 然后管理器调用备份代理的onBackup()方法。
备份不会立即启动。它安排在未来的时间。您可以在命令行上使用adb立即启动备份。
请参阅http://developer.android.com/guide/topics/data/backup.html(测试您的备用代理)