让一个 AsyncTask 等待另一个 AsyncTask 完成?
Make One AsyncTask Wait For Another One To Complete?
我有两个异步任务,每个任务都在一个单独的 class 中,我可以在主线程中调用它们,只需使用:
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
吗?
谢谢
我的主线程中有 4 个异步任务,其中 2 个中有 if 语句,如果一个工作,另一个停止。我确实 removecallback 并为彼此执行内部任务,为我工作。 (我正在使用 kotlin,但我认为同样适用于 java)
这将自动实现,因为除非你调用executeOnExecutor
, all AsyncTask
s run on the same thread,否则它们中的两个不能同时运行。
您必须在第一个 AsyncTask 和 onPostExecute 上实现接口,它将回调到主线程。您需要在覆盖回调方法上调用第二个 AsyncTask。
我有两个异步任务,每个任务都在一个单独的 class 中,我可以在主线程中调用它们,只需使用:
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
吗?
谢谢
我的主线程中有 4 个异步任务,其中 2 个中有 if 语句,如果一个工作,另一个停止。我确实 removecallback 并为彼此执行内部任务,为我工作。 (我正在使用 kotlin,但我认为同样适用于 java)
这将自动实现,因为除非你调用executeOnExecutor
, all AsyncTask
s run on the same thread,否则它们中的两个不能同时运行。
您必须在第一个 AsyncTask 和 onPostExecute 上实现接口,它将回调到主线程。您需要在覆盖回调方法上调用第二个 AsyncTask。