大多数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
}
答案 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?
创建一个List对象以跟踪完成的单个任务
将单个任务实施为可取消任务,并在完成时执行 侦听器,它将完成的侦听器添加到在步骤https://developers.google.com/android/reference/com/google/firebase/storage/CancellableTask中创建的列表中。
然后,启动计时器x秒钟。
然后,实现whenallcomplete侦听器。
如果whenallcomplete侦听器在计时器之前完成,请取消计时器 并继续。
否则,如果计时器先用完,请根据需要取消其余任务,然后 继续使用步骤1中已完成的列表对象。