#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 для этого переопределяющего метода обратного вызова.