我有一个从Firebase实时数据库中提取一些简单数据的应用程序,为了简化这里我想要的流程。
如果手机已连接到互联网:
如果手机处于离线状态
问题是我看不到可能的方法来检测firebase缓存中是否有数据可用。因此,当手机处于脱机状态时,我无法看到是否应该显示本地存储的数据或来自firebase数据库的缓存。
答案 0 :(得分:2)
同意以上答案,如果您以正确的方式进行操作,Firebase将为您完成。为了解决您的问题,您应该了解Firebase离线缓存的两种方法之间的区别-从内存读取和从磁盘读取。
在您的情况下,只需添加FirebaseDatabase.getInstance().setPersistenceEnabled(true);
以启用从磁盘读取
并添加yourReferenceForFirebase.keepSynced(true);
以保持数据同步
然后您的应用将按预期运行。
但是,只有这一部分:“如果Firebase缓存中没有任何内容->显示一些默认数据存储在应用程序本地”,似乎是不可能的。
答案 1 :(得分:0)
Firebase为您做到了。
即使您的应用暂时失去网络连接,Firebase应用也会正常工作。
此外,firebase应用程序会自动处理临时网络中断。 离线时可以使用缓存数据,Firebase会在网络连接恢复时重新发送任何写入。
如果还不够,您需要脱机工作,您还可以启用磁盘持久性,只需添加:
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
更多信息here。
编辑:
无法知道值是来自本地缓存还是来自远程服务器。
只有一种方法可以了解您的应用当前是否已连接到Firebase数据库服务器
要实现此目的,您可以detect the connection state收听.info/connected
值。