自动备份SQLite数据库
我的应用程序使用一个我想备份的小型SQLite数据库。我假设这不会自动发生,没有我使用fullBackupContent进行编码,如下所示。如何修改backupscheme.xml的内容以正确设置包含路径?我更喜欢在运行时设置数据库位置。自动备份SQLite数据库
我backupscheme.xml看起来像
<?xml version="1.0" encoding="utf-8"?>
<full-backup-content >
<include domain="database" path="device_info.db"/>
</full-backup-content
我的清单包含:
<application
android:allowBackup="true"
android:icon="@drawable/time_machine_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:name="mypackage.myapp"
android:fullBackupContent="@xml/backupscheme"
>
<include domain="database" path="device_info.db"/>
这里,域表示其中path
解释根目录。 database
映射到SQLite数据库默认存储,如果你使用:
-
getDatabasePath()
上Context
-
SQLiteOpenHelper
只是一个普通的文件名 -
openOrCreateDatabase()
只是一个普通的文件名
在这种情况下,文件名应该是您的path
值。
如果您的数据库由于某种原因存储在其他地方,则<include>
指令需要进行一些调整。
这可以简化事情。谢谢。你知道自动备份实际发生的时间/频率?有没有办法强制这个问题? –
@PhilO:用于测试,[按照说明](http://developer.android.com/training/backup/autosyncapi.html#testing)。在“现实世界”中,我不知道备份何时/多久发生,除非它与[文档](http://developer.android.com/training/backup/autosyncapi)中列出的条件相关。 HTML)。 – CommonsWare
正是我现在正在做的。备份似乎正常工作,但恢复失败,无法恢复包mypackage.myapp –
恩,如果你的数据库被命名为'device_info.db',它看起来像你有正确的东西来备份。 – CommonsWare
嗯,这不是名称,但我认为我必须使用完整路径填充路径,例如/data/mypackage.myapp/databases/mydatabase.db –