【问题标题】:Losing connection to Firebase realtime database after leaving the app in the background for a while将应用程序留在后台一段时间后失去与 Firebase 实时数据库的连接
【发布时间】:2018-02-28 06:29:20
【问题描述】:

我的应用程序在后台运行一段时间后失去与 Firebase 实时数据库的连接...换句话说,当我在后台运行一段时间后再次重新打开我的应用程序时,实时数据库服务停止运行,直到我清除手机设置中的应用程序数据和一切恢复正常......我阅读了类似的案例,发现Android在后台放置特定时间后会破坏与Firebase的资源(套接字连接)。但是,在返回应用程序后没有提供直接的解决方案来恢复连接......所以有什么帮助吗?

【问题讨论】:

  • 您正在测试的设备或模拟器的 API 级别是多少?
  • API 级别为 24。
  • 我尝试使用 API 24 模拟器和使用 Firebase 版本 11.2.2 构建的测试应用程序来重现该问题。我使用adb 命令强制更改空闲状态(Doze Mode)。对于我所做的少数测试,websocket 连接总是在退出打盹模式时重新建立。如果您的应用程序不需要在后台连接,请考虑删除onStop() 方法中的所有侦听器并在onStart() 中重新附加它们。这样一来,Firebase 将在后台运行一分钟后完全断开连接。并且..
  • 并且当应用程序进入前台时重新连接监听器时会重新连接。

标签: android firebase firebase-realtime-database


【解决方案1】:

预计当没有可见活动时,应用程序将失去其套接字连接。这就是 Firebase SDK 的工作方式。此外,Android 会主动暂停后台应用程序,以便在用户不积极使用时不会消耗数据和电池。

当活动再次启动时,Firebase SDK 应尝试恢复它用于与服务器通信的 websocket。这个 websocket 完全由 SDK 管理。您无需执行任何操作即可让它重新连接。

【讨论】:

  • 显然它没有重新连接......所有数据侦听器和写入尝试都不起作用。
  • 确实如此,否则很多应用程序会在那里崩溃。打开调试日志以获取有关正在发生的事情的更多信息。 FirebaseDatabase.getInstance().setLogLevel(Logger.Level.DEBU‌​G)
猜你喜欢
  • 1970-01-01
  • 2013-08-07
  • 2013-02-16
  • 2015-10-01
  • 2016-09-24
  • 2011-06-30
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
相关资源
最近更新 更多