作为标题,我正在使用infor/connection
检查从客户端到数据库的连接,但是如果我卸载并重新安装应用,则infor/connection
返回true
并返回false
之后,即使该设备可以访问互联网,我也已经在真实和虚拟设备上进行了测试,并且仍然存在该问题。
这是检查连接的代码:
mValueEventConnection = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
boolean isConnected = dataSnapshot.getValue(Boolean.class);
updateConnectionStatus(isConnected);
Log.d("SSSSS-CONNECTION", isConnected + "");
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("SSSSS-CONNECTION", databaseError + "");
}
};
CONNECT_REF.addValueEventListener(mValueEventConnection);
和结果:
D/SSSSS-CONNECTION: true
D/SSSSS-CONNECTION: false
更新:
第一次重新安装并打开应用程序后,会发生此问题,但是第二次不会发生。
答案 0 :(得分:0)
.info/connection
伪节点指示客户端是否具有与Firebase数据库服务器的连接,而不仅仅是与Internet的连接。
请注意,如果没有活动的数据侦听器且没有写操作,则Firebase客户端会在一分钟后自动断开连接。因此,如果您没有活动的侦听器或写入器,并且断开连接发生在连接后大约一分钟左右,则可以解释这种现象。
在后一种情况下,您可以将侦听器附加到数据的某些常规部分或某些不存在的节点上:FirebaseDatabase.getInstance().getReference("ThisDoesNotExist").addValueEventListener(...)
。