如何等待Google Play服务任务结果超时?

时间:2019-07-01 19:13:45

标签: android google-play-services google-tasks

大多数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
}

1 个答案:

答案 0 :(得分:0)

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

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

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

投掷

NullPointerException

如果提供的任何任务为空

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

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

下面通过示例显示了这一点:

Does Tasks.whenAllSuccess guarantee the order in which I pass tasks to it?

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

  2. 将单个任务实施为可取消任务,并在完成时执行      侦听器,它将完成的侦听器添加到在步骤https://developers.google.com/android/reference/com/google/firebase/storage/CancellableTask中创建的列表中。

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

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

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

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