firebase信息/连接onDataChange 1分钟错误无响应

时间:2016-06-18 07:25:08

标签: android firebase connection

我在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
        }
    });

观察到的行为:

一个。初始化时:

  • 调用onDataChange,并将connected设置为false
  • 此后快速调用
  • onDataChange并将connected设置为true(假设已连接互联网)

B中。在1分钟之前:

  • 关闭wifi或数据会导致连接设置为false
  • 启用wifi或数据会导致连接设置为true

℃。 1分钟

  • 通过onDataChange
  • 连接设置为false

d。 1分钟后

    无论是否使用wifi / data ,都不会调用
  • onDataChange

预期行为:

A&#39 ;.与A

相同

B&#39 ;.与B相同

C&#39 ;.没有

d&#39 ;.与B相同。

我已经看到了有关丢失身份验证的其他问题,但我的日志中没有看到身份验证问题。此外,一分钟的精确时间似乎非常具体,在其他类似的问题/答案中没有看到。 请注意,我使用的是firebase 9.0.2。

1 个答案:

答案 0 :(得分:2)

根据我在9.0.2上观察到的情况,连接在一分钟后不需要时关闭。要打开连接会不必要地耗尽电池。

在以下情况下需要连接:

  1. DatbaseReference.setValue()已执行。
  2. 执行
  3. Query.addListenerForSingleValueEvent()
  4. 已添加ValueEventListenerChildEventListener但未删除
  5. 关闭连接后,列出的某个事件将导致重新打开。对于事件1和2,连接将在一分钟后再次关闭。添加侦听器(不是单个值)时,连接将保持打开状态,直到删除侦听器。