使一个AsyncTask等待另一个完成?

时间:2020-09-15 13:36:49

标签: android android-asynctask

我有两个异步任务,每个任务在一个单独的类中,我可以在主线程中调用它们,只需使用:

 new RetrieveTask().execute();
 new RetrieveTaskImageData().execute();

但是我希望第一个完成后再开始第二个。

这是其中之一的示例:

class RetrieveTask extends AsyncTask<String, Void,Void> {
private Exception exception;
protected Void doInBackground(String... urls) {
    try {
        //Code here
    } catch (Exception e) {
        this.exception = e;

    } finally {
    }
    return null;
}
protected void onPostExecute() {
    //
}
}

我们如何实现这一目标?

编辑

我们可以使用new RetrieveTask().execute().getStatus()==..Finished吗?

谢谢

3 个答案:

答案 0 :(得分:0)

我在主线程中有4个异步任务,其中2个任务包含if语句,如果其中一个可行,则另一个停止。我确实做了removecallback并为彼此执行了内部任务,为我工作。 (我使用的是Kotlin,但我认为同样适用于Java)

答案 1 :(得分:0)

这将自动实现,因为除非您调用executeOnExecutor的所有AsyncTask,否则其中两个不能同时运行。

答案 2 :(得分:0)

您必须在第一个AsyncTask上实现接口,然后onPostExecute它将回调到主线程。您需要在该重写回调方法上调用第二个AsyncTask。