我正在为我的Android应用程序使用Firebase数据库。
当我提交分数时,如果它起作用,则会显示一条消息(片段serverOK)。
对于其他所有情况,我也想留言。如果databaseEror不为null,则存在一个,但是如果未连接到Firebase怎么办?
下面是我的代码:
ref.setValue(resultat, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference dataRef) {
if (databaseError == null) {
FragmentManager fm3 = getFragmentManager();
ServerOk serverok = new ServerOk();
serverok.show(fm3, "serverok");
} else {
FragmentManager fm3 = getFragmentManager();
Server server = new Server();
server.show(fm3, "server");
}
}
});
谢谢你的回答
最佳答案
Firebase客户端不会将不存在连接视为错误,因此不会使用错误调用完成侦听器。
当Firebase客户端未连接到后端时调用setValue()
时,客户端会将写入保留在队列中。恢复连接后,它将写入发送到服务器。
仅当服务器执行写入后,您的完成处理程序才会被调用。如果存在错误(即安全规则拒绝了写入),则会将错误传递给回调。
如果要在调用setValue()
之前了解客户端是否已连接到服务器,则可以attach a listener to .info/connected
。