我在onCreate
中调用了以下代码来跟踪用户是否连接到firebase /可以连接到firebase:
DatabaseReference connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
connected = snapshot.getValue(Boolean.class);
}
@Override
public void onCancelled(DatabaseError error) {
connected = false; // not called in the observations below
}
});
观察到的行为:
一个。初始化时:
B中。在1分钟之前:
℃。 1分钟
d。 1分钟后
预期行为:
A&#39 ;.与A
相同B&#39 ;.与B相同
C&#39 ;.没有
d&#39 ;.与B相同。
我已经看到了有关丢失身份验证的其他问题,但我的日志中没有看到身份验证问题。此外,一分钟的精确时间似乎非常具体,在其他类似的问题/答案中没有看到。 请注意,我使用的是firebase 9.0.2。
答案 0 :(得分:2)
根据我在9.0.2上观察到的情况,连接在一分钟后不需要时关闭。要打开连接会不必要地耗尽电池。
在以下情况下需要连接:
DatbaseReference.setValue()
已执行。Query.addListenerForSingleValueEvent()
ValueEventListener
或ChildEventListener
但未删除关闭连接后,列出的某个事件将导致重新打开。对于事件1和2,连接将在一分钟后再次关闭。添加侦听器(不是单个值)时,连接将保持打开状态,直到删除侦听器。