Как запустить несколько AsyncTask?

1

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

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

new PopulateSpinnerA().execute();

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

НО!

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

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

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

решение?

ОБНОВИТЬ!

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

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

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

Boolean SPN = false;

то я делаю функцию, чтобы проверить логическое и включить его onCreate()

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

on populateSpinnerA() Я просто поставлю эти 2 строки, чтобы запустить второй счетчик AsyncTask

SPN = true;
cek();

а также

БУМ!

это было сделано: D

  • 0
    стековая трассировка, пожалуйста?
  • 0
    что это? я не знаю
Показать ещё 3 комментария
Теги:
android-asynctask

1 ответ

1
Лучший ответ

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

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

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

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

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

  • 0
    я получаю вдохновение от этого ответа: D

Ещё вопросы

Сообщество Overcoder
Наверх
Меню