通过将其滑出来关闭应用时,会调用Firebase onDisconnected

时间:2017-01-12 10:27:49

标签: android firebase firebase-realtime-database

我有一个使用Firebase的应用。

Firebase的记录包含一个“状态”字段,如果用户离线或在线,该字段应该提供信息。

我将其初始化为:

fireBase = new Firebase("https://myProj.firebaseio.com/users");
child = fireBase.child(MyApp.myStringIdentifier);
child.child("status").setValue(ClientStatus.ONLINE);
child.child("status").onDisconnect().setValue(ClientStatus.OFFLINE);

初始化工作正常,并且在很多时间没有互联网连接后也会调用onDisconnect(),而firebase会按预期将状态更改为离线。

问题是,当用户从最近的应用列表中清除应用时,也会调用onDisconnect事件,但我希望用户保持在线状态,因为我获得了仍在后台运行的服务即使应用程序关闭也应处理某些事件(它们仍在运行,但其他用户获得关闭用户的脱机状态,然后阻止对该用户的操作)。

当用户刷出应用时,有没有办法阻止调用onDisconnect事件?

2 个答案:

答案 0 :(得分:2)

Firebase数据库客户端的onDisconnect处理程序称为:

  1. 当数据库客户端主动断开与Firebase服务器的连接时
  2. 当服务器检测到数据库客户端已消失时(通过套接字连接超时)
  3. 请注意,这些都与您的应用程序生命周期无关,这似乎是您感兴趣的内容。

    如果要在销毁应用程序时更改数据库,则应该将应用程序生命周期事件监听到detect when the application exits

答案 1 :(得分:2)

当Android设备的用户使用概览显示时,轻扫"一个应用程序,这是一个他们不想再使用该应用程序的信号,并且他们很快就没有兴趣回到它了。 Android将终止应用程序进程。杀死应用程序进程将关闭它与实时数据库的连接。关闭连接将导致onDisconnect()在服务器上执行。当用户做出决定时,您无法控制此过程。这是Android平台的设计,它允许用户最终决定实际可以在他们的设备上运行什么。作为应用程序开发人员,您无权强迫自己做出决定。

如果您想要向应用发送消息,即使用户已将其杀死,您也可以使用Firebase Cloud Messaging来发送用户表示感兴趣的事件。