【问题标题】:Make One AsyncTask Wait For Another One To Complete?让一个 AsyncTask 等待另一个完成?
【发布时间】:2021-01-02 06:48:41
【问题描述】:

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

 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 吗?

谢谢

【问题讨论】:

    标签: android android-asynctask


    【解决方案1】:

    这会自动实现,因为除非你调用executeOnExecutor,否则所有AsyncTasks run on the same thread,所以它们两个不能同时运行。

    【讨论】:

    【解决方案2】:

    我的主线程中有 4 个异步任务,其中 2 个中有 if 语句,如果一个有效,另一个停止。我确实删除了回调并为彼此执行了内部任务,为我工作。 (我正在使用 kotlin,但我认为同样适用于 java)

    【讨论】:

      【解决方案3】:

      你必须在第一个 AsyncTask 和 onPostExecute 上 impelement 接口,它会回调到主线程。您需要在该覆盖回调方法上调用第二个 AsyncTask。

      【讨论】:

        猜你喜欢
        • 2021-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-30
        • 2015-08-11
        • 2019-11-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多