android领域:从备份文件中恢复领域数据库

时间:2016-07-14 04:53:50

标签: android realm

我正在开发一个带有领域的笔记应用程序。我想添加备份和还原功能。所以我一直在实现this page中介绍的这些功能。这是用户场景。

  1. 当用户单击“备份”按钮时,将default.realm备份到temp.realm
  2. 用户单击“还原”按钮,将default.reaml替换为temp.realm。
  3. 重新加载数据并显示新数据(替换default.realm文件)。
  4. 如果我重新启动应用程序,它会很好用。但我想立即刷新新数据。如果我没有重新启动我的应用程序,它会很奇怪。所以我的问题是如何重新加载恢复的领域数据库,以便在没有重新启动应用程序的情况下显示恢复的数据。

1 个答案:

答案 0 :(得分:2)

在将temp.realm复制到default.realm之前,必须关闭所有打开的引用旧default.realm的Realm实例,这一点非常重要。由于这些实例仍然保存文件描述符,并且复制后新打开的Realm实例将保存不同的文件描述符,并且Realm仍然认为它们是同一个Realm,因为路径完全相同。这是Realm无法处理的情况,可能会发生一些奇怪的事情。

您可以先致电Realm.deleteRealm()删除旧版default.realm。如果要删除的realm文件中有任何其他Realm实例,则该API将抛出。