Java 当用户未连接到internet时写入firebase数据

Java 当用户未连接到internet时写入firebase数据,java,android,firebase,Java,Android,Firebase,我想在用户未连接到internet时更新Firebase数据库。这就像你在应用程序中,现在你关闭应用程序,你就关闭了互联网连接。因此,我使用LifeCycleObserver来检测应用程序是在前台还是在后台。在我的应用程序类中调用onStop时,我想将用户状态设置为脱机。当互联网连接处于正常工作状态时 我尝试过OnDisconnect().setValue(-),但它不起作用。有人能帮我解决这个问题吗 userDatabase.child(AppConstants.USER_IS_ONLINE)

我想在用户未连接到internet时更新Firebase数据库。这就像你在应用程序中,现在你关闭应用程序,你就关闭了互联网连接。因此,我使用
LifeCycleObserver
来检测应用程序是在前台还是在后台。在我的应用程序类中调用onStop时,我想将用户状态设置为脱机。当互联网连接处于正常工作状态时

我尝试过OnDisconnect().setValue(-),但它不起作用。有人能帮我解决这个问题吗

userDatabase.child(AppConstants.USER_IS_ONLINE).onDisconnect().setValue(status,object :  DatabaseReference.CompletionListener{
            override fun onComplete(p0: DatabaseError?, p1: DatabaseReference) {
                Log.d("Success","YES")
            }

        })
我想在用户未连接到internet时更新firebase数据库

你不可能做到这一点。由于用户的设备和Firebase服务器之间没有internet连接,因此无法更新任何内容。必须连接internet才能连接Firebase后端

用户可以通过两种方式断开与Firebase数据库的连接。关于这一点,请参见以下帖子中Frank van Puffelen的回答:


您什么时候在呼叫断开连接()?请记住,当用户连接到服务器时,您必须调用此函数,否则客户端无法将该指令发送到服务器。当应用程序位于前台和后台时,我调用onDisconnect()。当我的互联网连接打开时,一切正常。谢谢你的帮助@Frank van Puffelen和Alex Mamo。我解决了那个问题。再次感谢Frank van Puffelen,你的这一点“当用户连接到服务器时,你必须调用它”点击了我的大脑。现在它工作得很好。当我们的应用程序连接到服务器时调用OnDisconnect。我面临的下一个问题是,当我回到互联网上时,如何让用户恢复在线,因为我使用了作业计划。现在它可以正常工作了,谢谢你,盖伊在上面的帖子中提到“在完全断开连接的情况下,您的onDisconnect处理程序将立即启动,因此您的数据库将立即更新。”但我使用的是onDisconnect()。但它仍然不工作??是的,如果完全断开连接,onDisconnect处理程序将启动。如果处理程序不开火,这意味着你没有一个干净的断开连接,对吗?