首页 文章

Firebase数据库脱机编写

提问于
浏览
1

在我的Android应用程序中,我必须保留现有的SQLite数据库,但为了将元素(来自todo-list的任务)同步到多个设备,我决定使用Firebase数据库 .

所以我没有启用Firebase数据库离线模式,因为我必须使用SQLite(这是一个大学项目) .

所以我正在为写入做的是,每当从本地SQLite数据库添加或删除某些数据时,也会对Firebase进行更改 .

如果用户连接到Internet,或者即使用户离线添加任务,然后在应用程序上联机,所有这一切都按预期工作 .

但是,如果用户离线添加任务,然后关闭应用程序,然后在另一个应用程序中联机,即使用户再次打开我的应用程序,更改也不会被推送到数据库 .

有任何想法吗?

谢谢 .

1 回答

  • 2

    由于您未启用Firebase数据库脱机模式,因此您尝试推送的应用程序的所有数据都不会保存在永久存储中,而只会保存在内存中 . 这就是为什么在应用程序重启后所有这些数据都没有推送到Firebase的原因 .

    因此,在应用程序启动时需要一些同步算法,它将数据从本地数据库推送到firebase(反之亦然) .

    例如,您可以在本地和firebase端使用时间戳标记(System.currentTimeMillis()),它应始终在任何数据库更改时更新 .

    然后在应用程序启动时,您只需检查此标记:

    • 如果本地标记大于远程标记 - 这意味着远程数据库已过时 . 所以只需将所有本地sql数据库数据复制到firebase .

    • 如果远程标记大于本地标记 - 只需清理本地数据库并从firebase下载所有数据 .

    • 如果两个标记相等 - 这意味着一切都是最新的,什么都不做 .

    希望这可以帮助 :)

相关问题