gpt4 book ai didi

java - Firebase实时数据库: How to use onDisconnect

转载 作者:行者123 更新时间:2023-12-02 01:50:25 24 4
gpt4 key购买 nike

我发现我可以处理用户使用 onDisconnect 关闭应用程序的情况,但它无法按我的预期工作。

我想要做的只是在用户关闭设备或关闭应用程序时删除节点。但即使我关闭模拟器,数据库也从未改变。

mBaseNode = FirebaseDatabase.getInstance().getReference().child(...);
mBaseNode.child("aValue").onDisconnect.removeValue();
mBaseNode.addValueEventListener()...

我可能误解了onDisconnect。我这有什么错吗?

最佳答案

这背后的原因是 onDestroy() 通常根本不被调用。通常系统只是终止进程而不进行任何回调。知道 onDestory() 何时被触发有点棘手。

它主要在客户端和服务器断开连接时触发。

客户端与服务器断线时可能会出现两种情况:

  1. 客户端显式断开与服务器的连接
  2. 客户就这样消失了

当您终止该应用程序时,您将触发显式断开连接。在这种情况下,客户端将向服务器发送一个正在断开连接的信号,服务器将立即执行 onDisconnect() 回调。

当您关闭 WiFi 时,您的应用程序没有机会告诉服务器它正在断开连接。在这种情况下,一旦服务器检测到客户端消失,onDisconnect()就会触发。

这甚至可能需要几分钟,具体取决于套接字超时的配置方式。因此,在这种情况下,您只需多一点耐心,这意味着它在您的真实应用程序中看起来不会很好。

因此,我建议您删除 Activity 的 onPause() 方法中的值,如下所示:

@Override
protected void onPause() {
super.onPause();

final DatabaseReference rRef = FirebaseDatabase.getInstance().getReference().child(toBeDeleted);

rRef.child(yourWishChild).removeValue();


}

关于java - Firebase实时数据库: How to use onDisconnect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53065588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com