当前,为了防止从离线状态返回后写入Firebase,我在每次写入操作之前都要检查Internet连接。 而且,我的意思并不只是检查网络连接,还包括是否有实际的互联网访问权限。我ping google.com以便进行查找。
我认为这不是最好的方法。
那么,最佳做法是什么是告诉Firebase在没有可用的互联网连接时不缓存任何写操作,而只是预览一条简单的“无可用的互联网连接”消息?
答案 0 :(得分:3)
如果在用户设备甚至暂时失去连接时确实必须使应用程序无法使用,则必须将侦听器添加到名为/.info/connected
的特殊位置。它会在SDK认为已断开连接时告诉您。 documentation中对此进行了描述。当您收到这样的通知时,您将必须编写代码以使您的应用以所需的方式运行。
但是,在SDK决定连接实际上已经消失之前,从连接变为停止之时起,您的应用程序可能仍在写入数据。这些写操作仍将保持同步。
最好让您的应用程序可以脱机使用,并在由于脱机而导致数据尚未同步时通知用户。
答案 1 :(得分:2)
因此,最好的做法是仅在没有互联网连接时告诉Firebase不要缓存任何写操作
您不能告诉Firebase在脱机时不要将写入操作添加到队列中。这是Firebase实时数据库的最重要功能之一。因此,即使您的应用程序暂时失去了网络连接,Firebase应用程序也将正常运行。这就是该数据库的优点。
默认情况下,禁用离线持久性。如果启用了持久性,那么禁用持久性的最简单方法就是使用以下代码行:
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
通过这种方式,您告诉Firebase根本不需要任何缓存的数据,因此不会有任何写挂起的操作,但是不幸的是,您可以告诉您仅在脱机时才停止缓存数据。