2012-05-08 22 views
6

Quindi, sto lavorando su un decodificatore di codici a barre, che una volta che abbiamo il codice a barre va a moltiplicare le API su Internet per decodificare ciò che è stato appena scansionato. Il fatto è che devo collegare un po 'di parsing XML, e non so se lo sto facendo bene.AsyncTask Android all'interno di AsyncTask

Quindi, una volta scansionato il codice a barre, il mio programma chiama un ASyncTask che passa sopra un'API per recuperare il nome del prodotto. Una volta che ha il nome, voglio che chiami un altro ASyncTask. So che questo è possibile istanziando un ASyncTaks nel onPostExecute() dell'altro, ma, penso che questo sia sbagliato, perché è come scatole all'interno di scatole. Quindi non è possibile/meglio istanziare il mio secondo ASyncTask all'interno della mia attività principale, e farlo attendere fino al termine del mio primo ASyncTask?

(l'inglese non è la mia lingua principale, spero di essere stato chiaro).

+3

Qual è la ragione per utilizzare 2 attività? perché non fare ciò che vuoi nelle prime attività doInBackground? – Renard

+2

Non dovremmo prendere in giro la propria lingua (inglese) perché potrebbe non essere la sua lingua principale – waqaslam

+0

@Renard sembra troppo disordinato per lasciare tutto nel doInBackground. Il mio primo ASyncTask può restituire risultati diversi che prima devono essere trattati, quindi, in base al risultato, eseguire un po 'di analisi. Quindi l'avvio di altri ASyncTask mi consente di dividere il codice in più parti e renderlo più chiaro. – MagicMicky

risposta

17

Penso che sia assolutamente legittimo iniziare la seconda AsyncTask nel onPostExecute del primo AsyncTask, Mischiare entrambe le operazioni è un'idea logica cattivo , come "The Offspring", ha detto - "Tu devi mantenere 'em separati"

Se non si vuole che sia direttamente all'interno del onPostExecute sé, impostare un gestore di eseguirlo in attività e la chiamata questo gestore da onPostExecute.

E l'ultima cosa: se hai un sacco di logica, spostalo in un file separato, non tenerlo tutto nello stesso file.

+0

Ok, ho intenzione di provare a impostare un gestore nella mia attività e chiamarlo da 'onPostExecute()'. E sì, ho ottenuto più file, anche più pacchetti. Questo è il mio primo vero progetto Android, voglio che sia il più pulito possibile! – MagicMicky

+0

- Buona fortuna. :) – MByD