假设我们有两个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");

09-07 17:54