Как запустить несколько AsyncTask? - PullRequest
1 голос
/ 02 июля 2011

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

я вызываю AsyncTasks, используя этот

new PopulateSpinnerA().execute();

это работает, если я вызываю только одну AsyncTask для одного Spinner

НО!

У меня есть 2 Spinner, поэтому я вызываю AsyncTask для каждого Spinner следующим образом

new PopulateSpinnerA().execute(); // for Spinner A
new PopulateSpinnerB().execute(); // for Spinner B

Я запускаю его, и мое приложение закрывается

решение

UPDATE!

я получаю вдохновение от кого-то ниже, кто отвечает с правдой и ложью

я использую логическое значение (игра с истиной и ложью), чтобы сгенерировать мои два счетчика

сначала я делаю логическую переменную

Boolean SPN = false;

затем я делаю функцию для проверки логического значения и помещаю его в функцию onCreate ()

private void cek(){
        if(!SPN){
            new populateSpinnerA().execute();
        }
        if(SPN){
            new populateSpinnerB().execute();
        }
    }

на populateSpinnerA () Я просто поместил эти 2 строки для запуска AsyncTask второго счетчика

SPN = true;
cek();

и

БУМ!

готово: D

1 Ответ

1 голос
/ 02 июля 2011

Вы не можете иметь два блесны одновременно.В этом случае нужно использовать любой трюк,

  1. Использовать только один счетчик.
  2. Запустить счетчик при запуске первого счетчика.
  3. Использовать один общий флаг, установленный на PostExecute.
  4. Перед шагом № 3 на postExecute обоих AsyncTask проверьте, что флаг уже установлен, если да, просто отмените счетчик.

См. Ниже псевдокод.

postExecute(){
      If(taskCompletedFlag == true){
            //Code to cancel the spinner.
            taskCompletedFlag = false;
      }else{
            taskCompledtedFlag = true;
      }
}

PS - Если вы не знаете, какой AsyncTask будет инициирован первым, вы можете использовать тот же механизм там.

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