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

时间:2018-03-02 11:20:16

标签: java android firebase google-cloud-firestore

read在离线模式的Android上,onComplete()方法永远不会返回,除非设备上线,因此数据可以保留在Firestore的后台。

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

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

       }
  });

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

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

1 个答案:

答案 0 :(得分:6)

与Firebase实时数据库不同,您应该首先使用以下代码行:

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

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

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

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

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