有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Firebase“.info/connected”最初返回false,然后返回true

我试图做到,当用户失去与数据库的连接时,他们会被发送到上一个活动。然而,最终的结果是,在创建活动时,该数据库引用返回false,并立即引导用户返回上一屏幕,在这种情况下,他们必须重试为什么Firebase在获得此引用后立即返回false?我可以做些什么来防止出现这种情况

显而易见的解决方案是在用户连接后添加一种开关,然后允许断开的部分触发。但是,我想知道是什么原因导致false立即返回,以及如何防止它这样做。谢谢

DatabaseReference referenceConnection = database.getReference(".info/connected");
        referenceConnection.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                boolean isConnected = snapshot.getValue(Boolean.class);

                if(isConnected){
                        Log.e("CONNECTION", "REGAINED");
                        searchForRooms();
                }
                else{
                        // This returns immediately despite being connected
                        Log.e("CONNECTION", "LOST");
                        finish();
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });

共 (1) 个答案

  1. # 1 楼答案

    Why is Firebase returning false as soon as this reference is obtained and what can I do to prevent that?

    SDK不考虑自身“连接”,直到它能够与服务器建立第一次连接为止。在那之前,它是断开的。它一开始并不是“连接”的

    如果你想让某些活动只在应用程序连接时启动,你必须等到应用程序连接后再启动