0

大多数 Google Play 服务远程函数调用返回一个Task将在未来某个时间完成的。我有多个任务要等待,但不超过一定的超时时间。

Tasks.await()一个会等待一个超时的任务,这将阻塞调用线程。是否有可用的或可以在以下行中创建的东西:

waitWithTimeout(2, TimeUnit.SECONDS, task1, task2) { results: List<Task> ->
    // we will be here if both tasks are completed 
    // or when 2 seconds is up, whichever is earlier
}
4

1 回答 1

0

https://developers.google.com/android/reference/com/google/android/gms/tasks/Tasks

公共静态任务>> whenAllComplete(任务...任务)

当所有指定的任务都完成时,返回一个包含任务列表的任务。即使任何提供的任务失败或取消,此任务也将始终成功。不接受空值。

投掷

空指针异常

如果任何提供的任务为空

公共静态任务>> whenAllComplete(集合>任务)

当所有指定的任务都完成时,返回一个包含任务列表的任务。即使任何提供的任务失败或取消,此任务也将始终成功。不接受空值。

下面显示了一个示例中的实现:

Tasks.whenAllSuccess 是否保证我将任务传递给它的顺序?

  1. 创建一个 List 对象以跟踪完成的单个任务

  2. 使用完整的侦听器将单个任务实现为可取消任务,该侦听器将已完成的任务添加到步骤https://developers.google.com/android/reference/com/google/firebase/storage/CancellableTask中创建的列表中。

  3. 然后,启动计时器 x 秒。

  4. 然后,实现 whenallcomplete 监听器。

  5. 如果 whenallcomplete 侦听器在计时器之前完成,则取消计时器并继续。

  6. 否则,如果计时器首先用完,则根据需要取消剩余任务并使用步骤 1 中的已完成列表对象继续。

于 2019-07-02T22:38:38.057 回答