【问题标题】:Pipeline Firebase requests in androidandroid中的管道Firebase请求
【发布时间】:2018-03-10 03:19:45
【问题描述】:

我正在尝试同时向 Firestore 发送多个请求。我需要一次检索多个对象,目前无法使用一个 Query 请求,因为它们位于不同的位置,并且 Firestore 还没有查询多个位置或等效于 SQL 中的 IN 运算符.

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

那么,如何在 Android 中正确传输 Firestore 请求?

【问题讨论】:

  • 您是否只是尝试一次获取一堆文档,并在所有文档都可用时继续?如果是这样,您下面的答案太复杂了,代码行数太多。

标签: android firebase google-cloud-firestore


【解决方案1】:

如果您只想一次获取一堆文档(不监听更改),那么您只需要在所需的每个 DocumentReference 上使用 get() 方法。这些对 get() 的调用中的每一个都返回一个任务,其侦听器将被调用并得到结果。 Task 类似于 Future 或 JavaScript Promise - 这是 Play Services 用于异步编程的内容。

如果您想等到所有对 get 的调用都完成,只需将所有这些 Task 对象收集到一个 List 中,然后将其传递给 Tasks.whenAll() 以了解一切何时完成。这将返回另一个只有在所有其他任务都成功后才成功的任务。然后,您可以进入所有其他任务以获取文档内容。

您还应该知道,您使用的代码设置了文档更改的侦听器,并且当文档在服务器上发生更改时,它们将继续触发。如果不移除这些监听器,则会产生额外的数据成本,并且还会泄漏监听器。

【讨论】:

    猜你喜欢
    • 2016-05-10
    • 2021-07-19
    • 1970-01-01
    • 2020-04-20
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 2016-11-22
    相关资源
    最近更新 更多