我是Firebase实时数据库的新手,并且有一个基本问题,我似乎找不到答案。
我需要我的Android应用程序来跟踪数据库中的更改,因此我了解我需要通过onDataChange方法使用addValueEventListener。但是,即使应用程序被破坏,也会调用onDataChange方法吗?即使该应用程序不是在后台运行,我也需要能够访问数据库中信息的更改(例如,用户强制退出了该应用程序)。这是因为当值达到某个点时,我想显示一个弹出通知,因此即使应用程序未运行,我也需要能够读取这些值。
如果即使在应用程序处于后台时也调用了onDataChange,由于手机始终在监听更改,因此这会消耗电池电量。
很抱歉出现基本问题,但我找不到该信息。
谢谢!
答案 0 :(得分:1)
...当应用程序停止运行时,EventListener是否仍在侦听,并且将调用onDataChange吗?
事件侦听器仅在运行它们的上下文处于活动状态时才处于活动状态。对于侦听器,您附加到活动中,这意味着它们在应用程序运行时处于活动状态。即使这样,如果用户没有积极使用该应用,Android可能会杀死侦听器(或更准确地说是:侦听器用于与服务器通信的套接字)。
如果您希望侦听器保持更长时间的活动,则可以考虑在后台服务中管理侦听器。但是即使在那儿,Android可能也会关闭监听器以延长电池寿命。这是始终牢记的一件事:如果您的用例干扰了用户的喜好(并且大多数用户可能强烈希望电池寿命长于任何特定的应用程序功能),那么从长远来看就不太可能继续工作。 / p>
更好的方法是将侦听器与Firebase Cloud Messaging结合使用以发送消息。当用户不积极使用该应用程序时,更有可能(虽然仍不能保证)发送FCM消息,并且您可以使用它们来运行应用程序的某些代码。您将为此使用FCM的数据消息,这是大多数应用程序提供后台更新的方式。
您还可以使用FCM数据消息来唤醒您自己的代码,然后使该代码附加一个侦听器并获取其更新。这种行为被称为“发送挠痒痒”,因为所有数据消息都在唤醒应用程序代码。