android - Firebase 卡在没有互联网连接上

标签 android firebase firebase-realtime-database

在我的应用中,我将 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");
                        }
                    });

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

遇到这种情况我应该怎么做?

最佳答案

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

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) {
  }
});

关于android - Firebase 卡在没有互联网连接上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37830274/

相关文章:

android startActivityForResult 街景获取数据

ios - 在 firebase 中如何删除所有观察者,而不是特定引用的观察者

firebase - 使用Polymer的firebase-collection推送新文档

javascript - Firebase 查询显示键值(如果为真)

Android - AppWidgets、AlarmManager 和 AsyncTask

Android Kotlin 按整理器排序

javascript - 为什么 scrollView 在我的代码中不能以垂直方式工作?

firebase - 找不到 com.crashlytics.sdk.android :crashlytics:17. 2.2

ios - Firebase 查询无法正常工作

android - 一次查询多个 ID 的 Google Firestore