在Android中管道Firebase请求

时间:2018-03-10 03:19:45

标签: android firebase google-cloud-firestore

我正在尝试同时向Firestore发送多个请求。我需要一次检索多个对象,一个Query目前无法提出请求,因为它们位于不同的位置,而Firestore尚未查询多个位置或等同于IN运算符在SQL

我从这个问题中了解到,Speed up fetching posts for my social network app by using query instead of observing a single event repeatedly Firebase可以将查询一起管道,因为它使用了一个连接,但我找不到任何关于如何在android中执行此操作的内容。

那么,如何在Android中正确管理Firestore请求?

1 个答案:

答案 0 :(得分:4)

如果您只想一次获取大量文档(不听取更改),那么您只需要在每个所需的DocumentReference上使用get()方法。每次调用get()都会返回一个Task,其侦听器将随结果一起调用。 Task就像是未来或JavaScript承诺 - 它是Play服务用于异步编程的内容。

如果你想等到get的所有调用完成,只需收集列表中的所有Task对象,然后将其传递给Tasks.whenAll(),以便知道什么时候完成。这将返回另一个任务,只有在所有其他任务成功后才能成功。然后,您可以进入所有其他任务以获取文档内容。

您还应该知道,您正在使用的代码会将监听器设置为文档中的更改,并且当文档在服务器上发生更改时,它们将继续触发。如果你不删除那些听众,你将会产生额外的数据费用,并且还会泄露听众。