作为标题,我使用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更新:
在第一次重新安装和打开应用程序之后,问题就会发生,但是第二次不会。
发布于 2019-07-13 16:20:29
.info/connection伪节点指示客户端是否连接到Firebase数据库服务器,而不仅仅是连接到internet。
请注意,如果没有活动数据侦听器且没有写入,则Firebase客户端在一分钟后会自动断开连接。因此,如果您没有活动的侦听器或写入,并且断开连接发生在连接大约一分钟后,这可以解释行为。
在最后一种情况下,您可以将侦听器附加到数据的某些常规部分,或一些不存在的节点:FirebaseDatabase.getInstance().getReference("ThisDoesNotExist").addValueEventListener(...)。
https://stackoverflow.com/questions/56999809
复制相似问题