我正在尝试从Cloud Firestore数据库中检索用户的数据并将其显示在片段中。由于Firestore中的查询以异步方式工作,因此在从Firestore DB获取所有数据之前,将加载UI。如果查询速度不够快,我的片段的OnViewCreated
方法会加载空数据。
避免此问题的最佳做法是什么?在查询处理过程中,我是否应该显示加载指示符?如果是这样,我怎么知道它什么时候结束?
此外,在User
类中检索数据并在不同片段之间共享相同实例的最佳做法是什么?
答案 0 :(得分:2)
要解决此问题,您需要在尝试从Cloud Firestore数据库获取文档时使用addOnCompleteListener
。这意味着onComplete()
方法被触发,因为它具有异步行为,您必须调用另一个方法或直接显示该方法中的UI元素,否则它将始终为null
。
还有另一种方法,即添加回调以便能够在该方法之外访问它。为此,我重新尝试潜入异步世界,并从post看到我的回答。这是为了在onDataChange()
方法之外获取数据,但它几乎相同。
为获得最佳用户体验,您可以添加加载指示器,以便用户看不到空白屏幕。