我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";
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。