【发布时间】:2019-08-12 14:49:21
【问题描述】:
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