android的Firebase移动连接测试问题

android的Firebase移动连接测试问题,android,firebase-realtime-database,Android,Firebase Realtime Database,我正在使用Firebase实时数据库构建一个应用程序,并测试onFailure回调。我关闭手机数据并运行下面的代码 mDatabaseReference.updateChildren(childUpdates) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e

我正在使用Firebase实时数据库构建一个应用程序,并测试onFailure回调。我关闭手机数据并运行下面的代码

mDatabaseReference.updateChildren(childUpdates)
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(TeamActivity.this, R.string.toast_message_error_add, Toast.LENGTH_LONG).show();
                }
            });

问题是toast消息没有弹出,然后当我重新打开移动数据时,我的firebase数据库突然在几秒钟后被填充。现在我明白了当您设置FirebaseDatabase.getInstance().setPersistenceEnabled(true)时应该会发生这种情况,但我没有这个设置,也不想设置它。当互联网连接关闭时,应用程序应该显示toast消息,因为它应该无法写入。有人知道为什么会发生这种情况吗?

只有在服务器写入失败时才会触发
onFailure
回调,通常是因为安全规则拒绝了它

没有网络连接不会触发故障,它只是延迟对数据库服务器的写入,直到您重新联机

另见:

  • (关于如何检测您是否有连接)

只有在服务器写入失败时才会触发
onFailure
回调,这通常是因为安全规则拒绝了它

没有网络连接不会触发故障,它只是延迟对数据库服务器的写入,直到您重新联机

另见:

  • (关于如何检测您是否有连接)

您可以使用线程来检查连接是否可用,因为firebase不提供检查方法:

您可以使用线程来检查连接是否可用,因为firebase不提供检查方法:

我的一个测试客户端在其移动设备上安装了应用程序(始终连接网络)和wi-fi平板电脑(不始终连接)。我们遇到的问题是,当他的平板电脑脱机时,他写入了大量数据。他无法连接到互联网,所以他用手机重复写入,但一旦他的平板电脑收到连接,数据又重复写入。因此,我想最好的方法是在写入服务器之前检查连接,是吗正确吗?没有一种方法是最好的。按照您目前实施它的方式,最后一次写入会成功。这可能是您想要的,也可能是您不想要的。如果不是,您确实无法在脱机时写入(或者使用事务,在脱机时它将不起作用),但当用户的连接不稳定时,这通常会给他们带来不便。另一种方法是在每次更新中添加时间戳,然后如果他们的时间戳早于当前值,则拒绝写入安全规则。谢谢Frank。我认为最好保持原样,让那些具有时间戳的用户延迟便盆连接。我只是不允许没有连接的设备能够点击添加按钮或其他东西。顺便说一句,我喜欢你的firecasts!我的一个beta测试客户端在他的移动设备(始终具有网络连接)和wi-fi平板电脑(不始终连接)上安装了该应用程序。我们遇到的问题是,当他的平板电脑脱机时,他写入了大量数据。他无法连接到互联网,所以他用手机重复写入,但一旦他的平板电脑收到连接,数据又重复写入。因此,我想最好的方法是在写入服务器之前检查连接,是吗正确吗?没有一种方法是最好的。按照您目前实施它的方式,最后一次写入会成功。这可能是您想要的,也可能是您不想要的。如果不是,您确实无法在脱机时写入(或者使用事务,在脱机时它将不起作用),但当用户的连接不稳定时,这通常会给他们带来不便。另一种方法是在每次更新中添加时间戳,然后如果他们的时间戳早于当前值,则拒绝写入安全规则。谢谢Frank。我认为最好保持原样,让那些具有时间戳的用户延迟厕所连接。我只是不允许没有连接的设备能够点击添加按钮或其他什么。顺便说一下,我喜欢你的Firecast!