多个Firebase数据库子/值侦听器对移动应用程序是否有效?

时间:2017-09-29 08:57:03

标签: java android firebase firebase-realtime-database

我已经阅读了Firebase实时数据库一段时间了,我只是想知道从数据库中获取事件驱动数据的整个想法。如果只有在对数据库进行了更改时才从数据库下载数据,那么对电池或Internet连接等设备资源的要求则要低得多。我以为我可以使用反映数据库结构的模型对象重新映射我在Android活动中需要的整个数据库片段,并使用Child / Value侦听器更新其值。然后,我将以灵活的POJO形式获得所需的全部数据,并且每次数据库发生更改时都会更新。所以它实际上是一个实时解决方案。但是我想知道这样数量的听众是否会在电池寿命或数据传输等任何方面减慢或超载用户的设备。

那么,在我的Java模型对象中反映数据库状态是一个很好的解决方案还是我应该采用另一种方式呢?

有人能解决我的疑虑吗? 谢谢!

2 个答案:

答案 0 :(得分:2)

只有在数据库中更改了某些内容时才会触发侦听器。因此,您只在需要时获取数据。当没有可见活动时,您的应用程序将失去其套接字连接。这就是Firebase SDK的工作方式。此外,Android将积极暂停后台应用程序,以便在用户不主动使用时不会消耗数据和电池。

例如,当您重新启动活动时,Firebase SDK会尝试恢复用于与服务器通信的websocket。这个websocket完全由SDK管理。

希望它有所帮助。

答案 1 :(得分:0)

Firebase.addvalueeventlistener()仅在您请求的数据库中有任何更改或更新时才有效。这是使用JAVA对象移动的好方法,或者您也可以使用HashMaps<>。 对于设备电池和性能的担忧,然后您尝试仅获取您想跟踪其更改事件的那部分,而不是请求整个数据库。 如果你也希望在Whatsapp上获取背景数据,那么你可以在Internet上使用Broadcast Receiver,在Firebase.addvalueeventListener()中使用startservice()。