2012-05-08 18 views
6

Pracuję więc nad dekoderem kodu kreskowego, który, gdy już mamy kod kreskowy, idzie na wielokrotność API przez Internet, aby rozszyfrować to, co właśnie zostało zeskanowane. Chodzi o to, że muszę połączyć trochę przetwarzania XML i nie wiem, czy robię to dobrze.Android AsyncTask wewnątrz AsyncTask

Po zeskanowaniu kodu kreskowego mój program wywołuje funkcję ASyncTask, która przechodzi przez interfejs API w celu pobrania nazwy produktu. Gdy już ma nazwę, chcę ją wywołać inną ASyncTask. Wiem, że jest to możliwe przez utworzenie wystąpienia ASyncTaks w onPostExecute() innych, ale myślę, że to jest złe, ponieważ jest jak pola w pudełkach. Więc nie jest możliwe/lepiej utworzyć mój drugi ASyncTask w mojej głównej Działalności i sprawić, że poczeka aż moja pierwsza ASyncTask zostanie zakończona?

(angielski nie jest moim podstawowym językiem, mam nadzieję, że wyraziłem się jasno).

+3

Jaki jest powód używania 2 zadań? dlaczego nie robić tego, co chcesz w pierwszych zadaniach doInBackground? – Renard

+2

Nie powinniśmy żartować z własnego języka (angielskiego), ponieważ może to nie być jego główny język. – waqaslam

+0

@Renard wydaje się zbyt brudny, aby pozwolić wszystkim na doInBackground. Moja pierwsza funkcja ASyncTask może zwracać różne wyniki, które muszą najpierw zostać przetworzone, a następnie, zgodnie z wynikiem, wykonać kilka dalszych analiz. Tak więc uruchamianie innych funkcji ASyncTask pozwala mi dzielić kod na wiele stron i uczynić go bardziej zrozumiałym. – MagicMicky

Odpowiedz

17

Myślę, że to absolutnie uzasadnione, aby rozpocząć drugą AsyncTask w onPostExecute pierwszego AsyncTask, Mieszanie obu operacji jest zły logiczny pomysł jako „The Offspring” powiedział - „Musicie zachować„em oddzielone”

Jeśli nie chcesz być bezpośrednio wewnątrz samego onPostExecute, ustawić obsługi do wykonania go w aktywności i rozmowy ten przewodnik od onPostExecute.

I ostatnia rzecz - jeśli masz dużo logiki - przenieś ją do osobnego pliku, nie przechowuj wszystkiego w tym samym pliku.

+0

Okay, spróbuję ustawić program obsługi w mojej aktywności i wywoływać go z 'onPostExecute()'. I tak, mam wiele plików, nawet wiele pakietów. To mój pierwszy prawdziwy projekt na Androida, chcę, żeby był jak najbardziej czysty! – MagicMicky

+0

- Powodzenia. :) – MByD