【问题标题】:Firebase Database offline writingFirebase 数据库离线写入
【发布时间】:2017-01-05 11:42:31
【问题描述】:

在我的 Android 应用中,我必须保留现有的 SQLite 数据库,但为了将元素(待办事项列表中的任务)同步到多个设备,我决定使用 Firebase 数据库。

所以我没有启用 Firebase 数据库离线模式,因为我必须为此使用 SQLite(它用于大学项目)。

所以我在写入方面所做的是,每当从本地 SQLite 数据库中添加或删除一些数据时,也会对 Firebase 数据库进行更改。

如果用户连接到互联网,或者即使用户在离线状态下添加任务,然后在使用应用程序时变为在线状态,所有这些都可以正常工作。

但如果用户离线添加任务,然后关闭应用,然后在另一个应用中变为在线,则更改不会被推送到数据库,即使用户再次打开我的应用。

有什么想法吗?

谢谢。

【问题讨论】:

  • 据我所知,如果写入互联网的设备(Firebase)之间没有连接,那么那里的 Firebase 数据将无法更新。但是如果手机在应用关闭后上线,你可以做一些后台服务来更新数据,你就完成了。

标签: android database firebase firebase-realtime-database


【解决方案1】:

由于您没有启用 Firebase 数据库离线模式,您的应用尝试推送的所有数据都不会保存在持久存储中,而只会保存在内存中。这就是为什么应用重启后所有这些数据都不会推送到 Firebase 的原因。

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

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

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

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

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

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

希望这会有所帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    相关资源
    最近更新 更多