设备离线时Service修改Firestore数据,Activity的addSnapshotListener能否接收变更?
问题解答
你的场景下,Activity的addSnapshotListener完全可以接收到离线状态下Firestore的数据变更,具体原因如下:
- Firestore在Android端默认开启了离线持久化功能,当设备离线时,Service向Firestore写入的数据会先被保存到本地缓存中,而非直接发送到云端。
addSnapshotListener的设计本身就会监听本地缓存+云端数据的双重变化,不管设备处于在线还是离线状态。只要本地缓存有数据更新(比如Service离线写入的内容),监听器会立即触发回调,把最新的数据推送给Activity展示。- 等设备恢复在线后,Firestore会自动把本地缓存里的待同步数据上传到云端,这个过程不需要你额外编写代码。如果云端有其他设备的变更,监听器也会同步拉取并更新给Activity,全程保持数据一致。
所以你之前设计的本地广播确实是冗余的,可以直接移除,只用Firestore的addSnapshotListener就能统一处理在线、离线两种状态下的数据展示逻辑,既简化代码,又能保证数据的一致性。
内容的提问来源于stack exchange,提问作者Jeffrey Chen
相关产品推荐
相关产品推荐

