Ищете хороший способ запуска двух (зависимых) задач в Android - PullRequest
0 голосов
/ 26 декабря 2011

Мне нужно выполнить две задачи, чтобы вторая задача зависела от действия первой. Первая задача похожа на загрузку файла, а вторая задача выполняет некоторые действия с загруженным файлом. Для этого я создал две AsyncTasks A и B.

Один из вариантов, который у меня есть, - это просто объединить две задачи и иметь только одну AsyncTask вместо двух.

Но я выясняю варианты, которые у меня есть, если я не хочу объединять две задачи.

То, что я не могу сделать, это вызвать одну задачу, а затем напрямую вызвать другую задачу из моей деятельности по понятным причинам (потому что код вызовет AsyncTask 2 до завершения AsyncTask 1, которая выполняется в фоновом режиме).

Другой вариант - вызвать AsyncTask A, а затем в методе onPostExecute AsyncTask A вызвать AsyncTask B, так что B будет работать только после окончания части doInBackground A. Итак, это в основном вызов задачи из другой задачи.

Есть ли другой лучший способ сделать это?

Есть ли способ, с помощью которого я могу узнать в своей активности вызова, когда AsyncTask A завершен (без блокировки потока пользовательского интерфейса), чтобы я мог вызвать AsyncTask B после того, как узнал, что AsyncTask A завершен?

1 Ответ

0 голосов
/ 26 декабря 2011

Конечно!

Запуск обоих AsyncTask одновременно:

A.execute();
B.execute(A); // give B a reference to A

На вашем B.onBackground:

while(A.getState() != AsyncTask.Status.FINISHED){
 try{
  Thread.sleep(500);
 }catch(InterruptedException e){
  e.printStackTrace();
 }
}

// Your actual code here. This code section will only be reached if A was finished
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...