【问题标题】:Firebase gets stuck on no INTERNET connectionFirebase 卡在没有 INTERNET 连接上
【发布时间】:2016-10-16 06:20:05
【问题描述】:

在我的应用程序中,我使用 Firebase 作为数据库。现在,当我监听特定位置的子节点的任何变化时,如果没有互联网连接,则不会触发回调。 firebase 调用卡住了。

我正在使用这个,

FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
firebaseDatabase.setPersistenceEnabled(true);

因此,启用了持久性。该问题仅出现一种情况。当没有关于 Firebase 本地持久性的数据并且互联网连接也不可用时。

我正在使用这个,

addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {

                        }

                        @Override
                        public void onCancelled(DatabaseError databaseError) {
                            Timber.d("Cancelled");
                        }
                    });

我没有收到该特定场景的两个回调中的任何一个。

我应该怎么做才能解决这种情况?

【问题讨论】:

  • 我现在确实遇到了同样的问题。你有没有做任何事情来解决它?如果没有,那么我可能不得不求助于他们的 REST API。
  • 您为 Firebase 使用的 SDK 版本是什么?
  • 我最终通过使用从这个答案中获得的信息解决了这个问题:stackoverflow.com/questions/39021378/…
  • 谢谢。如果您可以将解决方案作为答案,那就太好了。可以对其他人有所帮助。

标签: android firebase firebase-realtime-database


【解决方案1】:

让我们看看在没有连接时这些方法是如何被触发的:

onCancelled - 当出现服务器端错误时。例如,当用户无权访问指定节点时。 (或者当您达到 Sparkle 计划的连接限制时)。

onDataChange - 如果有数据持久化,它将读取这些数据。如果没有,则不会触发此方法(您的情况)。

根据Firebase Documentation,如果要检查设备是否连接到Firebase Server,可以在.info/connected添加监听器。像这样:

DatabaseReference connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot snapshot) {
    boolean connected = snapshot.getValue(Boolean.class);
    if (connected) {
      Toast.makeText(this, "Connected", Toask.LENGTH_SHORT);
    } else {
      Toast.makeText(this, "Not connected", Toask.LENGTH_SHORT).show();
    }
  }

  @Override
  public void onCancelled(DatabaseError error) {
  }
});

【讨论】:

  • 我想知道您从哪里知道我们需要获取此参考 '.info/connected' 以检查连接状态。
  • 我已将 Firebase 文档链接添加到我的答案中。 @Herry
  • connected 为假,即使 Internet 可用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-13
  • 1970-01-01
相关资源
最近更新 更多