我发现当用户使用onDisconnect
关闭应用程序时我可以处理,但无法正常工作。
我要做的只是在用户关闭设备或关闭应用程序时删除一个节点。但是即使关闭仿真器,数据库也永远不会改变。
mBaseNode = FirebaseDatabase.getInstance().getReference().child(...);
mBaseNode.child("aValue").onDisconnect.removeValue();
mBaseNode.addValueEventListener()...
我可能会误解
onDisconnect
。我有什么错吗? 最佳答案
通常根本不调用onDestroy()
背后的原因。通常,系统只是在没有任何回调的情况下终止了进程。知道何时触发onDestory()
有点棘手。
主要在客户端和服务器断开连接时触发。
客户端和服务器断开连接时,可能会发生两种情况:
客户端明确断开与服务器的连接
客户就消失了
当您终止应用程序时,将触发显式断开连接。在这种情况下,客户端将向服务器发送断开连接的信号,并且服务器将立即执行onDisconnect()
回调。
关闭wifi时,您的应用程序没有机会告诉服务器它正在断开连接。在这种情况下,一旦服务器检测到客户端消失,onDisconnect()
将触发。
甚至可能要花几分钟,具体取决于套接字超时的配置方式。因此,在这种情况下,您只需要多一点耐心即可,这意味着它在您的实际应用中看起来不会很好。
因此,建议您删除活动的onPause()
方法中的值,如下所示:
@Override
protected void onPause() {
super.onPause();
final DatabaseReference rRef = FirebaseDatabase.getInstance().getReference().child(toBeDeleted);
rRef.child(yourWishChild).removeValue();
}