【问题标题】:About Firestore is there some flag I can check if the data is on/off line data?关于 Firestore 是否有一些标志我可以检查数据是否在线/离线数据?
【发布时间】:2018-03-02 11:20:15
【问题描述】:

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

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

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

       }
  });

我只想问这是否正确?如果是的话,是否有一些标志我可以检查数据是在线/离线数据吗?

有时这样做get() 它不会返回,只是永远挂在那里,也许这与我的设备在大量调试后变热有关。

【问题讨论】:

    标签: java android firebase google-cloud-firestore


    【解决方案1】:

    与在 Firebase 实时数据库中启用离线持久性的位置不同,您应该首先使用以下代码行:

    FirebaseDatabase.getInstance().setPersistenceEnabled(true);
    

    在 Cloud Firestore 中,对于 Android 和 iOS,默认情况下会启用离线持久性。所以,没有必要使用:setPersistenceEnabled(true)

    当您离线并使用get() 调用时,结果将来自您的应用正在使用的 Cloud Firestore 数据的缓存副本。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-11
      • 2019-04-13
      • 2017-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      相关资源
      最近更新 更多