Заставить одну асинхронную задачу ждать завершения другой?

#android #android-asynctask

#Android #android-асинхронная задача

Вопрос:

У меня есть две асинхронные задачи, каждая в отдельном классе, я могу вызывать их в основном потоке, просто используя:

  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 будут выполняться в одном потоке, поэтому два из них не могут выполняться одновременно.

Комментарии:

1. Спасибо, какова ссылка на это?

2. @TiyebM документация Google, порядок выполнения: developer.android.com/reference/android/os /…

Ответ №2:

У меня есть 4 асинхронные задачи в моем основном потоке, и в 2 из них есть оператор if, если одна работает, другая останавливается. Я сделал removecallback и выполнил только внутренние задачи друг для друга, сработало для меня. (я использую kotlin, но я думаю, что то же самое должно работать с Java)

Ответ №3:

Вы должны запустить интерфейс при первой AsyncTask, и onPostExecute выполнит обратный вызов в основной поток. вам нужно вызвать second AsyncTask для этого переопределяющего метода обратного вызова.