在Android和FCM的背景上处理keepSynced()

时间:2017-02-13 17:41:49

标签: android firebase firebase-realtime-database firebase-cloud-messaging

我考虑使用keepSynced()来获取Firebase实时数据库中的某些数据。我知道它会自动同步这些路径。但这与Android生命周期有何关系?如果用户离开所有活动(并且所有正常的侦听器都断开连接),它是否会停止同步?我不希望该应用程序变成数据或电池耗尽。

另一方面,我希望在FCM通知到达时更新缓存数据。我可以启动一些连接到Firebase的服务。我想同步keepSynced()中的所有路径,并在同步时停止它。我不知道如何实现这一目标。创建其中一个路径的监听器并使服务保持运行一段时间?服务完成后,它会停止同步吗?

1 个答案:

答案 0 :(得分:5)

firebaser here

很棒的问题!

如果没有活动活动,操作系统可能会随时关闭与Firebase数据库的连接。我们的SDK不会尝试阻止这种情况,但会在应用再次变为活动状态时重新连接。

您在第二段中描述的是我们所谓的“推送同步”,您可以在其中发送推送通知(通常是静默FCM数据消息)以触发数据同步。

我们在去年的I / O应用程序中做了类似的事情,虽然它比我们想要的要复杂得多,但效果很好。在这种情况下,我们明确管理了连接,调用goOnline()goOffline()(5分钟之后)。主同步代码可在the IOSched github repo

中找到