【问题标题】:Android - Firestore offline data synchronizationAndroid - Firestore 离线数据同步
【发布时间】:2019-08-12 14:49:21
【问题描述】:

firestore documentation 说:

Cloud Firestore 会缓存您的应用正在使用的数据,因此即使设备处于离线状态,应用也可以写入、读取、侦听和查询数据。 当设备重新上线时,Cloud Firestore 会将所有本地更改同步回 Cloud Firestore。

现在,我已经对此进行了测试,显然,恢复联机的设备并不是同步发生所需的全部内容。

我通过以下方式对其进行了测试:

  • 在我的模拟器上打开“飞行模式”
  • 正在尝试将数据发送到 Firestore*
  • 关闭我的应用程序
  • 在我的模拟器上关闭“飞行模式”

* 我用FirebaseFirestore.getInstance().collection("foo").document().set(bar)


在此测试结束时,数据未发送到 Firestore 远程数据库。我需要再次打开我的应用才能发送数据。

但是,我仍然不确定到底是什么触发了同步。是只有我的应用程序处于打开状态,还是需要有一个打开的套接字才能使用 Firestore?


我测试了最后一件事,那就是:

  • 在我的模拟器上打开“飞行模式”
  • 正在尝试将数据发送到 Firestore*
  • 关闭我的应用程序
  • 更改我的代码以使应用停留在初始屏幕上
  • 在我的模拟器上关闭“飞行模式”
  • 打开了我的应用

在本次测试结束时,数据未发送到 Firestore 远程数据库。

但是,再一次,我仍然不确定究竟是什么触发了同步。它可能是打开的套接字,但如果是这样,是否需要在与我的收藏相关的查询中打开它?


我的最后一个问题是:

究竟是什么触发了同步?

【问题讨论】:

  • 在启动应用程序后尝试使用 SDK 至少进行一次查询。 SDK 可能只需要在内部初始化即可开始同步。

标签: android firebase google-cloud-firestore broadcastreceiver android-8.0-oreo


【解决方案1】:

是只有我的应用程序处于打开状态还是需要一个打开的套接字才能进行 Firestore?

这取决于“我的应用正在打开”的含义。如果它意味着在前台,那可能没有多大意义,因为您可以在后台运行作业,并打开 Firestore 的套接字。


可能是打开的套接字,但如果是这样,是否需要在与我的收藏相关的查询中打开它?

不,它没有。 数据库的任何部分上的任何 CRUD 操作都会启动同步,无论是通过查询集合还是获取、保存、更新或删除文档。

【讨论】:

    猜你喜欢
    • 2021-11-30
    • 1970-01-01
    • 2018-10-06
    • 2016-05-12
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 2011-09-10
    相关资源
    最近更新 更多