Filo
Un thread è un'unità di esecuzione simultanea. Ha il proprio stack di chiamate. Esistono due metodi per implementare i thread nelle applicazioni.
Uno sta fornendo una nuova classe che estende Thread e sovrascrive il suo metodo run (). L'altro sta fornendo a una nuova istanza Thread un oggetto Runnable durante la sua creazione. Un thread può essere eseguito chiamando il suo metodo "start". Puoi impostare la "Priorità" di un thread chiamando il suo metodo "setPriority (int)".
È possibile utilizzare un thread se non si ha alcun effetto nella parte dell'interfaccia utente. Ad esempio, si sta chiamando un servizio Web o si scaricano alcuni dati e, dopo il download, lo si visualizza sullo schermo. Quindi devi usare un gestore con un thread e questo renderà la tua applicazione complicata per gestire tutte le risposte dai thread.
Un gestore consente di inviare ed elaborare oggetti Message e Runnable associati a MessageQueue di un thread. Ogni thread ha ciascuna coda di messaggi. (Come un elenco di cose da fare) e il thread prenderà ogni messaggio e lo elaborerà fino a quando la coda dei messaggi è vuota. Pertanto, quando l'handler comunica, invia un messaggio al thread del chiamante e attenderà l'elaborazione.
Se si utilizzano thread Java, è necessario gestire i seguenti requisiti nel proprio codice:
Sincronizzazione con il thread principale se si riportano risultati all'interfaccia utente Nessun valore predefinito per l'annullamento del thread Nessun pool di thread predefinito Nessun valore predefinito per la gestione delle modifiche alla configurazione in Android
AsyncTask
AsyncTask consente un uso corretto e semplice del thread dell'interfaccia utente. Questa classe consente di eseguire operazioni in background e pubblicare risultati sul thread dell'interfaccia utente senza dover manipolare thread e / o gestori. Un'attività asincrona è definita da un calcolo che viene eseguito su un thread in background e il cui risultato è pubblicato sul thread dell'interfaccia utente.
AsyncTask passerà attraverso le seguenti 4 fasi:
OnPreExecute ()
Richiamato sul thread dell'interfaccia utente prima dell'esecuzione dell'attività
doInbackground (Parametri ..)
Richiamato sul thread in background immediatamente dopo che onPreExecute () termina l'esecuzione.
onProgressUpdate (Progress ..)
Richiamato sul thread dell'interfaccia utente dopo una chiamata a publishingProgress (Progress ...).
OnPostExecute (Risultato)
Richiamato sul thread dell'interfaccia utente al termine del calcolo in background.
Perché dovresti usare AsyncTask?
Facile da usare per un thread dell'interfaccia utente. (Quindi, usalo quando il thread del chiamante è un thread dell'interfaccia utente).
Non è necessario manipolare i gestori.