1

我正尝试使用Facebook/Parse Bolts框架在Android上并行运行多个任务。 documentation for running tasks in parallel似乎表明whenAll的结果将始终为空。螺栓任务在Parallel螺栓中运行将返回Android上的非Void类型吗?

有没有办法获得一个或多个并行任务的实际结果?

+0

它发生我也许可以使用事件公共汽车(如奥托)来完成类似的事情?我对事件公共汽车上的线程执行力不够了解,无法确定。 – Martin

回答

0

在上whenAll延续,可以从子任务直接得到的结果:

final Task<A> a = // ... 
final Task<B> b = // ... 

Task.whenAll(Arrays.asList(a, b)).continueWithTask((t) -> { 
    if (!a.isFaulted()) { 
    return doSomethingAsync(a.getResult()); 
    } 
    if (!b.isFaulted()) { 
    return doSomethingElseAsync(b.getResult()); 
    } 

    // ... 

    return t; 
}); 
1

您可以访问像这样的任务的结果:

ArrayList<Task<Boolean>> tasks = getTasks(); 
Task.whenAll(tasks).onSuccess(new Continuation<Void, Void>() { 
    @Override 
    public Void then(Task<Void> task) throws Exception { 
     for (Task<Boolean> t : tasks) { 
      doSomething(t.getResult()); 
     } 
     return null; 
    } 
});