假设我们有两个http异步调用,任务1和任务2。我想同时处决他们两个。一旦两者都完成了,我想触发一个函数。
既然我们不知道哪个任务会先完成,怎么知道任务已经完成并触发函数呢?
最佳答案
步骤1:创建接口任务完成,
public interface TaskComplete {
public void TaskDone(String asyncClassName);
}
步骤2:在调用异步任务的类中创建它的对象。
TaskComplete taskComplete = new TaskComplete() {
boolean firstDone = false;
boolean secondDone = false;
@Override
public void TaskDone(String asyncClassName) {
// TODO Auto-generated method stub
if(asyncClassName.equals("FIRST_ASYNC")) {
firstDone = true;
} else if(asyncClassName.equals("SECOND_ASYNC")) {
secondDone = true;
}
if(firstDone == true && secondDone == true) {
// Both async completed - do your work
}
}
};
步骤3:从异步类的相应onPostExecute方法调用它们。
taskComplete.TaskDone("FIRST_ASYNC");
taskComplete.TaskDone("SECOND_ASYNC");