Autore Topic: [AsyncTask] come gestire i dati alla fine del task?  (Letto 779 volte)

Offline helldron

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
[AsyncTask] come gestire i dati alla fine del task?
« il: 14 Ottobre 2012, 17:19:46 CEST »
0
Ciao a tutti,
sto utilizzato gli async task per chiamare un Web Service.

Vorrei recuperare i dati della response e impostarli nelle variabili dell'activity chiamante. Al momento riesco a farlo solo dall'AsyncTask.

Esempio: inserisco un record nel db, e nel onPostExecute() faccio così

supponiamo di avere un'activity RegisterAcitvity che chiama il task e il task stesso imposta il valore isInserted grazie alla variabile che referenzia l'activity
Codice: [Seleziona]
@Override
protected void onPostExecute(String response) {
...
registerAcitvity.setIsInsert(response.toString());
                String message;
                if(registerAcitvity.getIsInsert().equals("1")){
                        message = "ok!";
                }else{
                        message = "Si è verificato un errore!";
                }
                Toast toast = Toast.makeText(registerAcitvity, message, Toast.LENGTH_LONG);
                toast.show();
}
In questo caso tutto ok perchè magari mi basta mostrare un messaggio sull'inserimento ma se volessi impostare una list view sull'activity e sapere con certezza quando effettuare questa operazione (o va bene farlo sempre dal task)?

Quindi non ho ben chiaro:
se passo la palla dal task all'activity come faccio a sapere quando sono pronti i dati in modo che l'activity se li gestisca correttamente??
Si può utilizzare isCancelled dall'activity per quanto ho detto prima?
« Ultima modifica: 16 Ottobre 2012, 08:49:18 CEST da helldron »

Offline davraf

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    GT-I9001
  • Sistema operativo:
    Android 2.3.6, Kernel 2.6.35.7
Re:[AsyncTask] come gestire i dati alla fine del task?
« Risposta #1 il: 23 Aprile 2013, 10:52:25 CEST »
0
Citazione
se passo la palla dal task all'activity come faccio a sapere quando sono pronti i dati in modo che l'activity se li gestisca correttamente??
beh, stai usando una classe che lavora in modo asincrono, quindi per i fatti suoi rispetto all'activity. quando cadi nella onPostExecute il lavoro è stato fatto. se hai dichiarato la classe come sottoclasse dell'activity basta che aggiungi sempre nella onPostExecute il codice per riempire la listview. se invece è una classe separata devi per forza passare tutto ciò che ti serve (lista e adapter) come parametro di ingresso della AsyncTask, magari costruendo un oggetto specifico.