Raf*_*afi 11 android firebase firebase-realtime-database
在我的应用程序中,我只是尝试Firebase通过ListenerForSingleValueEvent在以下代码中添加一个来从我的数据库中检索读取段落:
myRef.child("passages").child(passageNum).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
System.out.println("ON DATA CHANGE");
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("DATABASE ERROR");
FirebaseErrorHandler.handleDatabaseError(databaseError.getCode(), ReadingActivity.this);
}
});
Run Code Online (Sandbox Code Playgroud)
当有互联网连接时,它工作得很好.但是,当我故意关闭互联网连接时,既没有onDataChange也没有onCancelled被呼叫.这非常令人沮丧,因为其中两个错误代码databaseError.getCode()与网络连接问题有关.
如果我不能在此获得的数据由于没有互联网,我想至少让用户知道,而不是有这个监听器挂在屏幕不断加载.有办法解决这个问题吗?我是否只需要使用Firebase'sREST API?至少对于RESTful网络请求,它们会通知您连接是否失败.
Firebase将数据事件流(例如onDataChange())与可能发生的其他事件分开.它只会onCancelled在有服务器端原因时才会调用(目前仅在客户端没有访问数据的权限时).没有理由取消监听器,因为没有网络连接.
您似乎正在寻找的方法是检测是否存在网络连接(这不是特定于Firebase的任务)或用户是否连接到Firebase数据库后端.后者可以通过附加一个监听器来实现.info/connected,这是一个隐式布尔值,true当你连接到Firebase数据库后端时,就是这样false.有关完整详细信息,请参阅文档中有关检测连接状态的部分.
| 归档时间: |
|
| 查看次数: |
5163 次 |
| 最近记录: |