安卓数据库备份

4
我正在寻找在Android手机上备份我的应用程序数据库的方法。我知道SQLite数据库只是文件,因此如果可用SD卡,我期望能够将文件直接复制到SD卡。
不过,我不确定如何为备份/恢复准备我的数据库/活动。
在开始时,我的主活动从数据库中读取一个表中的条目,并将它们显示在ListView中。正如API的“Notes”示例所示,我有一个游标自动通知关于该表的更改(当我添加/删除/更新表中的记录时,ListView会自动更新)。
那么:当我将数据库文件复制到SD卡上时,我应该不会遇到问题。但是,如果用户想要还原数据库文件呢?我不能只是将文件复制回数据文件夹,对吧(编辑:...而视图显示数据库中的数据,因此可能保持打开连接)?
在实现备份/恢复时,什么是最佳实践?我考虑的一个方法是:
1.打开一个特殊的“还原”活动,它没有打开的数据库连接
2.为主活动调用finish()以删除它并关闭数据库连接
3.复制回数据库文件
4.打开新的"实例"主活动
5.为“还原”活动调用finish()
这样做是否可行?感谢任何建议!
1个回答

5
但是如果用户想要恢复数据库文件怎么办?我不能简单地把文件复制回数据文件夹,对吧?
可以的。因为你可以将文件从数据文件夹移动到SD卡上的文件夹中,所以你也可以将文件从SD卡中移动回数据文件夹。
你现在提出的方法很好,只需记住在备份/还原期间不要有任何打开的数据库对象。

我的意思是,当视图有一个打开的连接时,我不能将文件复制回去。当我完成从数据库检索数据的视图时,所有连接都应该关闭,对吧? - Thorsten Dittmar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接