我正在为我的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

10-04 17:31