2015-03-09 8 views
14

Ho già sviluppato un'attività che analizzerà i dati JSON e visualizzerà i risultati in un controllo ListView. Sto usando un AsyncTask per questo scopo.Puoi avere due AsyncTask in una sola attività?

Quello che voglio ora è che, quando faccio clic su un elemento in ListView, il file dovrebbe iniziare il download. Posso scrivere un altro AsyncTask nella stessa attività in modo che questo AsyncTask faccia il lavoro di download per me? C'è qualche problema con avere più AsyncTasks nella stessa attività?

+1

Naturalmente puoi – Apurva

risposta

5

Non ci dovrebbero essere problemi con più Asynctask in una singola attività. Si dovrebbe fare attenzione a definire chiaramente i valori che ognuno manipola (ad esempio, se l'attività B si basa su un valore assegnato dall'attività A, assicurarsi che A debba finire per primo), ma in generale, dovrebbe andare bene. Ho un progetto in questo momento con tre asynctasks in esecuzione al momento della prima installazione, e sta andando avanti fino ad ora.

11

Come da Doc sì, è possibile.

All'inizio, AsyncTasks veniva eseguito in serie su un singolo thread di sfondo . A partire da DONUT, questo è stato modificato in un pool di thread che consente a più attività di operare in parallelo. A partire da HONEYCOMB, le attività vengono eseguite su un singolo thread per evitare errori di applicazione comuni causati dall'esecuzione parallela.

Se veramente si vuole l'esecuzione parallela, è possibile richiamare executeOnExecutor (java.util.concurrent.Executor, Object []) con THREAD_POOL_EXECUTOR.

Prima risposta How si trova su stackoverflow.

2

Sì .. È possibile.

AsyncTask è una semplice implementazione del gestore di thread.