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 楼答案
SDK不考虑自身“连接”,直到它能够与服务器建立第一次连接为止。在那之前,它是断开的。它一开始并不是“连接”的
如果你想让某些活动只在应用程序连接时启动,你必须等到应用程序连接后再启动