让一个 AsyncTask 等待另一个完成?
Posted
技术标签:
【中文标题】让一个 AsyncTask 等待另一个完成?【英文标题】:Make One AsyncTask Wait For Another One To Complete? 【发布时间】: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
吗?
谢谢
【问题讨论】:
【参考方案1】:这会自动实现,因为除非你调用executeOnExecutor
,否则所有AsyncTask
s run on the same thread,所以它们两个不能同时运行。
【讨论】:
谢谢,这个参考是什么? @TiyebM 谷歌文档,执行顺序:developer.android.com/reference/android/os/…【参考方案2】:我的主线程中有 4 个异步任务,其中 2 个中有 if 语句,如果一个有效,另一个停止。我确实删除了回调并为彼此执行了内部任务,为我工作。 (我正在使用 kotlin,但我认为同样适用于 java)
【讨论】:
【参考方案3】:你必须在第一个 AsyncTask 和 onPostExecute 上 impelement 接口,它会回调到主线程。您需要在该覆盖回调方法上调用第二个 AsyncTask。
【讨论】:
以上是关于让一个 AsyncTask 等待另一个完成?的主要内容,如果未能解决你的问题,请参考以下文章
等待 AsyncTask 完成,然后在 Android Java 中执行下一个代码
如何让一个 Observable 序列在发射前等待另一个完成?
java 另一个等待线程 - 字体:https://stackoverflow.com/questions/2321829/android-asynctask-testing-with-android