【问题标题】:Android: Firebase realtime database updated when app destroyedAndroid:应用程序销毁时更新 Firebase 实时数据库
【发布时间】:2019-06-20 17:40:52
【问题描述】:

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

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

如果即使应用在后台也调用 onDataChange,由于手机一直在监听变化,这是否会消耗电池电量。

很抱歉这个基本问题,但我找不到信息。

谢谢!

【问题讨论】:

  • " 即使应用程序没有在后台运行,也需要能够访问数据库中信息的更改。"您不能强制应用程序在手机中始终处于活动状态。但是,您可以拥有后台服务。
  • 我稍微编辑了问题。我知道您不能强制应用程序处于活动状态,但我的问题是当应用程序死亡时,EventListener 是否仍在侦听,并且会调用 onDataChange 吗?
  • 如果应用死了,它就死了。死人不能做事。如果您有后台服务,即使它已经死了,那么它也死了。
  • 你不能只用 onPause 调用你的更新吗?我正在使用 Firestore 和最少的数据来执行此操作。这可能是一种不好的做法,但您可以在更新被销毁之前发送它

标签: android firebase firebase-realtime-database


【解决方案1】:

...当app死了,EventListener还在监听,会不会调用onDataChange?

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多