【问题标题】:Firebase listeners when application is not running [duplicate]应用程序未运行时的 Firebase 侦听器 [重复]
【发布时间】:2018-05-18 03:17:42
【问题描述】:

有什么方法可以让我的Firebase 监听器处于活动状态,即使应用程序没有运行?

我需要在运行时添加监听器,不使用服务。

请帮帮我。

【问题讨论】:

标签: java android firebase firebase-realtime-database


【解决方案1】:

在您的情况下,要实现这一点,只需不要删除侦听器。

但请记住,如果您在不再需要某个侦听器时不移除它,它将继续接收在其侦听位置发生的更改。因此,每次添加侦听器而不删除它时,所有先前的侦听器仍将收到结果。我只能想象重复多次会很快消耗具有移动数据连接的设备上的可用网络带宽,并且显然会导致速度变慢。

这里是 how to remove the listener 根据您的活动的生命周期。

【讨论】:

  • 不是监听器删除自己。当我们从堆栈中删除应用程序时。?
  • 不,您需要自己删除它,就像我在该帖子中的回答一样。如果您使用addListenerForSingleValueEvent:,则无需删除监听器。
  • 然后它不起作用,因为我没有删除听众。
  • 如果您使用addValueEventListener(),这意味着taht 将继续侦听它所附加的查询或数据库引用。为什么说这不起作用?
  • 我的意思是,当我的应用程序未运行时,侦听器无法正常工作。所以我认为,当我们从堆栈中删除应用程序时,firebase 监听器也会被删除。
【解决方案2】:

所有 Firebase 实例,无论它们是什么,都只是您进程内的内存中实例,您添加到它们的侦听器也是如此。

当您的应用程序的进程因任何原因被终止/停止时,所有这些侦听器和实例都将被垃圾回收,并且将不再在内存中处于活动状态,因此不会触发任何更新。

是否删除侦听器无关紧要,如果托管所有这些侦听器的进程消失了。

如果您希望某些内容在后台运行,即使您的应用没有运行。您应该考虑使用Service

或者更好地解释您的用例会更容易为您提供帮助。

没有多少 - 或任何 - 用例需要始终实时更新,每天每一小时的每一秒。

【讨论】:

  • 我的用例就像餐厅应用程序,用户可以在其中向餐厅老板发送预订请求,所以现在当用户发送此请求时,我会显示弹出窗口。希望你能明白。
  • 而且没有后端,你只依赖 Firebase 同步信息吗?
  • 你为什么不为此使用推送通知@vinay
猜你喜欢
  • 2017-05-31
  • 2018-01-01
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多