在我的应用程序中,我只是尝试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网络请求,它们会通知您连接是否失败.