java – 关于Firestore是否有一些标志我可以检查数据是否为开/关线数据?

read在Android上处于脱机模式时,onComplete()方法永远不会返回,除非设备上线,因此数据可以持久保存到Firestore的后台.

当我处于离线模式并且执行此操作时get()我注意到它返回我认为必须是本地数据,因为我有setPersistenceEnabled(true)

  query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
      @Override
      public void onComplete(@NonNull Task<QuerySnapshot> task) {

       }
  });

我只是要问这是否正确?如果是这样,我可以检查数据是否为在线/离线数据?

有时做这个get()它不会永远挂在那里,也许这与我的设备在经过大量调试后变热有关.

解决方法:

与Firebase实时数据库中的启用脱机持久性不同,您应首先使用以下代码行:

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

在Cloud Firestore中,对于Android和iOS,认情况下启用脱机持久性.因此,不需要使用:setPersistenceEnabled(true).

当您处于脱机状态并且正在使用get()调用时,结果将来自您的应用正在使用的Cloud Firestore数据的缓存副本.

要检查数据是来自缓存还是来自Firestore服务器,您可以使用以下代码行:

String source = querySnapshot.getMetadata().isFromCache() ? "Local Cache" : "Firebase Server";

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...