Статус Asynctask всегда показывает работает - PullRequest
5 голосов
/ 01 декабря 2011

Я хочу выполнить асинхронную задачу после завершения первого задания.Но при выводе состояния первой задачи всегда отображается RUNNING. При параллельном выполнении обеих задач будет выполняться только небольшая задача.Я использую оба метода в действии. Любая идея?

вот мой пример кода

public class test extends Activity 
 {

    ExecuteTask1 task1; 
    ExecuteTask2 task2; 
 @Override
public void onCreate(Bundle savedInstanceState)
     {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

            task1 = new ExecuteTask1();
            task1.execute(token);
            System.out.println(task1.getStatus());
            if(task1.getStatus() ==AsyncTask.Status.FINISHED)
            {
                task2 = new ExecuteTask2();
                task2.execute(token);
            }

     }
}

Ответы [ 3 ]

4 голосов
/ 01 декабря 2011

В вашем коде прямо сейчас вы не даете времени завершить задачу 1.Запустите задачу 2 из метода onPostExecute задачи 1.(Вы должны будете изменить код в классе ExecuteTask1, чтобы это работало.)

В качестве альтернативы, пусть task1 перезвонит вашей активности (или опубликует сообщение или что-то еще) в onPostExecute, чтобы ваша активностьзатем можно запустить задачу 2.

1 голос
/ 01 декабря 2011

Это потому, что вы получаете статус task1 сразу после запуска - вам нужно вызвать второй AsyncTask из onPostExecute() первого, используя обработчик или каким-либо другим способом.

0 голосов
/ 30 ноября 2012

Метод получения AsyncTask блокирует.Затем вы также можете написать task1.get() и затем task2.execute().Таким образом, вы удалите зависимость task1 с task2 в реализации AsyncTask

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...