首页 > 解决方案 > Android:应用程序销毁时更新 Firebase 实时数据库

问题描述

我是 firebase 实时数据库的新手,并且有一个我似乎找不到答案的基本问题。

我需要我的 Android 应用程序来跟踪数据库中的更改,所以我知道我需要使用 addValueEventListener 和 onDataChange 方法。但是,即使应用程序被销毁,是否会调用 onDataChange 方法?即使应用程序没有在后台运行(例如用户强制退出应用程序),我也需要能够访问数据库中信息的更改。这是因为当值达到某个点时,我想显示一个弹出通知,所以即使应用程序没有运行,我也需要能够读取这些值。

如果即使应用程序在后台调用 onDataChange ,这是否会消耗电池电量,因为手机总是在监听变化。

对不起,基本问题,但我找不到信息。

谢谢!

标签: androidfirebasefirebase-realtime-database

解决方案


...当应用程序死机时,EventListener 是否仍在侦听,是否会调用 onDataChange?

事件侦听器仅在它们运行的​​上下文处于活动状态时才处于活动状态。对于您在活动中附加的侦听器,这意味着它们在应用程序运行时处于活动状态。即使这样,如果用户没有主动使用应用程序,Android 也可能会杀死侦听器(或更准确地说:它们用于与服务器通信的套接字)。

如果您希望侦听器保持活动更长时间,您确实可以考虑在后台服务中管理侦听器。但即便如此,Android 也可能会关闭监听器以延长电池寿命。这是要始终牢记的一件事:如果您的用例干扰了用户的偏好(大多数用户可能更喜欢更长的电池寿命,而不是任何特定的应用程序功能),从长远来看,它不太可能继续工作。

更好的方法是将侦听器与 Firebase Cloud Messaging 结合起来发送消息。当用户没有积极使用应用程序时,FCM 消息更有可能(尽管仍然不能保证)被传递,并且您可以在它们到达时使用它们来运行应用程序的一些代码。您需要为此使用 FCM 的数据消息,这是大多数应用程序提供后台更新的方式。

您还可以使用 FCM 数据消息来唤醒您自己的代码,然后让该代码附加一个侦听器,并获取其更新。这种类型的行为称为发送痒痒,因为所有数据消息所做的都是唤醒应用程序代码。


推荐阅读