【问题标题】:Should Firebase listeners be removed when a Native app is "backgrounded"? [closed]当原生应用程序处于“后台”时,是否应该删除 Firebase 侦听器? [关闭]
【发布时间】:2020-09-17 01:36:48
【问题描述】:

当监听组件被卸载时,从 Firebase 数据库(无论是 Cloud Firestore 还是实时数据库)中删除监听器被认为是一种很好的做法。

在很多应用程序中,包括我的(React Native 应用程序),这可能不会经常发生。

例如,当我的用户通过身份验证(登录)时,他们订阅了 RTDB 和 CFS 上的许多侦听器。我希望他们在应用程序范围内看到通知和消息以及其他“实时”更新之类的内容 - 例如,考虑通知“徽章”或“未读消息”。

原生应用程序的开发人员会知道,应用程序可以长时间保持“后台”状态。并且通过身份验证刷新,用户很少会退出我的应用程序。这意味着这些组件永远不会(或很少)卸载,因此仍然订阅更新 - 我认为。

我是否应该添加逻辑,以便在用户将应用程序置于后台时将这些订阅者移除到实时数据,仅在他们再次前台时重新恢复它们?

【问题讨论】:

    标签: firebase react-native firebase-realtime-database google-cloud-firestore


    【解决方案1】:

    您要问的主要是意见问题,这与 Stack Overflow 无关。也就是说,您可能应该花一些时间来了解无限期添加听众的后果。

    当用户没有查看您的应用时未删除的侦听器仍会产生下载其正在侦听的文档的更新的成本。这是否可以接受完全取决于您。

    主机操作系统可能会在一段时间后限制用户无法看到的应用程序的网络访问。这是为了用户的利益,因此实施不佳的应用程序不会消耗过多的网络和电池。发生这种情况时,您不能依赖这些侦听器正常工作。如果您希望侦听器在应用程序不可见时保持活动状态,则需要使用它提供的任何 API 告诉主机操作系统您想要什么。即使这样,您也没有任何保证,因为操作系统可能会简单地杀死一个不可见的应用程序以回收资源。

    在您了解给定操作系统上的行为应用程序后,您必须自己决定何时添加和删除侦听器。

    【讨论】:

      猜你喜欢
      • 2017-06-27
      • 2017-05-31
      • 1970-01-01
      • 2019-01-24
      • 2019-08-10
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      相关资源
      最近更新 更多