|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2008
Città: Napoli
Messaggi: 846
|
[Android] - Esecuzione nuova Activity e AsyncTask
Salve a tutti!
Sono alle prese con lo sviluppo di un'app per Android, ma non scendo nei dettagli perché non è importante... Piuttosto mi trovo di fronte ad un dubbio che riguarda AsynTask, il cui uso serve di solito per delegare ad altri thread task che non intervengono sulla UI alleggerendo di conseguenza il task che ha compiti di gestione della UI... Per aprire una nuova activity ho inserito la porzione di codice che fa ciò all'interno del metodo doInBackground, appartenente alla classe AsyncTask, ma ho sentito/letto che alcuni consigliano fortemente il posizionamento della porzione stessa di codice nel metodo onPostExecute... Qualcuno mi sa confermare che sia più corretto così? Per quali motivazioni? Grazie anticipatamente a chi risponderà! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2006
Città: Ilê-de-France
Messaggi: 319
|
la norma è che in doInBackground va tutto il codice che deve essere appunto eseguito in backgroud (es. Lettura dati da DB, connessioni a WebService, ecc...)
mentre in onPostExecute andrebbe tutto il codice che va eseguito una volta terminata l'esecuzione della parte in background, quindi se ad esempio devi leggere dei dati da qualche parte e poi questi dati ti servono per popolare l'activity che vuoi lanciare, puoi fare tutta la parte del caricamento in doInBackground e lanci l'activity da onPostExecute
__________________
There is no cloud, it's just someone else computer |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Nov 2008
Città: Napoli
Messaggi: 846
|
Quote:
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
Aggiungo a quanto detto (correttamente) da Gabrik, che come dice il metodo stesso la porzione di codice all'interno di doInBackground viene eseguita nel nuovo Thread creato dalla AsyncTask, mentre il codice che inserisci nei metodi onPreExecute e onPostExecute vengono eseguiti sul main thread, lo stesso che si occupa dell'interfaccia utente. Pertanto all'interno di quei metodi DEVE essere inserito tutto il codice che va, in qualche maniera, a modificare l'interfaccia utente (compreso quindi la creazione e lancio della nuova activity).
In realtà potresti chiamare lo startActivity anche dentro il codice eseguito in un altro thread, ma per farlo dovresti "barare" un pò per esempio utilizzando un Handler creato nell' UI Thread. Il tutto però ha ben poco senso in questo caso, visto che l'AsyncTask ha già di suo dei metodi predisposti per questo. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Nov 2008
Città: Napoli
Messaggi: 846
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:46.




















