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

Exo*_*Kid 3 java android firebase google-cloud-firestore

的时候在Android在离线模式下的onComplete()方法永远不会返回,除非该设备在线这样的数据可以被保存到在公司的FireStore的backen.

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

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

       }
  });
Run Code Online (Sandbox Code Playgroud)

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

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

Ale*_*amo 7

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

FirebaseDatabase.getInstance().setPersistenceEnabled(true);
Run Code Online (Sandbox Code Playgroud)

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

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

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

String source = querySnapshot.getMetadata().isFromCache() ? "Local Cache" : "Firebase Server";
Run Code Online (Sandbox Code Playgroud)