Firebase如何检测缓存数据是否可用

时间:2017-02-16 09:57:17

标签: android caching firebase firebase-realtime-database

我有一个从Firebase实时数据库中提取一些简单数据的应用程序,为了简化这里我想要的流程。

如果手机已连接到互联网:

  • 从firebase数据库中获取数据

如果手机处于离线状态

  • 如果firebase缓存中有数据 - >从缓存中获取数据
    • 如果firebase缓存中没有任何内容 - >显示本地存储在应用程序中的一些默认数据

问题是我看不到可能的方法来检测firebase缓存中是否有数据可用。因此,当手机处于脱机状态时,我无法看到是否应该显示本地存储的数据或来自firebase数据库的缓存。

2 个答案:

答案 0 :(得分:2)

同意以上答案,如果您以正确的方式进行操作,Firebase将为您完成。为了解决您的问题,您应该了解Firebase离线缓存的两种方法之间的区别-从内存读取和从磁盘读取。

阅读本文-> https://pamartinezandres.com/lessons-learnt-the-hard-way-using-firebase-realtime-database-c609b52b9afb

在您的情况下,只需添加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值。