Autore Topic: AsyncTask consecutivi  (Letto 882 volte)

Offline babsevensix

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: +1
    • Mostra profilo
AsyncTask consecutivi
« il: 13 Gennaio 2013, 21:45:27 CET »
0
Avrei una routine che deve scaricare dei dati con dei parametri diversi.
Ovviamente utilizzo un AsyncTask per scaricare la pagina web, e vorrei farli eseguire in modo consecutivo, quindi aspettare il primo asynctask quindi il successivo, come si può fare?
Grazie a tutti
Alberto

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:AsyncTask consecutivi
« Risposta #1 il: 14 Gennaio 2013, 09:17:57 CET »
0
Quando un AsyncTask termina viene chiamato il suo onPostExecute, direi che è il posto giusto dove far partire il task successivo.
Se i tuoi task sono specializzati e non hanno bisogno di parametri per l'esecuzione (quindi non li lanci con execute(Params... params) ma con il solo execute() ) può essere comodo implementarti un asyncTask che prevede nel costruttore il riferimento al prossimo task da lanciare.

Qualcosa del tipo:
Codice (Java): [Seleziona]
public abstract class AsyncTaskChain<Params, Progress, Result>
                             extends AsyncTask<Params, Progress, Result> {

  protected AsyncTask nextTask = null;
     
  public AsyncTaskChain(AsyncTask nextTask) {
    super();
    this.nextTask = nextTask;
  }
     
  @Override
  protected void onPostExecute(Result result) {
    if(nextTask != null)
      nextTask.execute();
  }      
}

Offline babsevensix

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: +1
    • Mostra profilo
Re:AsyncTask consecutivi
« Risposta #2 il: 14 Gennaio 2013, 09:52:44 CET »
0
Hai ragione, non c'avevo pensato, per carità non è che mi piaccia molto la soluzione però risolve.

Grazie ancora per l'idea!!!!

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:AsyncTask consecutivi
« Risposta #3 il: 14 Gennaio 2013, 10:19:18 CET »
0
Neanche a me a dire il vero, ma è la prima che mi è venuta in mente =P

Offline babsevensix

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: +1
    • Mostra profilo
Re:AsyncTask consecutivi
« Risposta #4 il: 14 Gennaio 2013, 10:40:32 CET »
0
Se te ne viene in mente un altra la pubblichi? Grazie  ;-)

Offline babsevensix

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: +1
    • Mostra profilo
Re:AsyncTask consecutivi
« Risposta #5 il: 15 Gennaio 2013, 13:17:05 CET »
0
Allora tolgo il risolto in non risolto, purtroppo il metodo suggerito non può funzionare e spiego subito perchè.
Io ho una lista di oggetti e per ognuno di essi devo fare un get di una pagina web e vorrei fossero consecutivi.

Ho provato così:
Codice (Java): [Seleziona]
synchronized (html) {
    GetHtmlOfPage(
        UrlPages.URL_WEB_SITE
                + String.format(UrlPages.PATH_DETTAGLIO, id), new ICallBackGetPage() {
                                @Override
                                public void GetResult(String result) {
                                        //.... some istruction
                                        html.notify();
                                }
                });
        html.wait();
}

ma quando arriva al wait blocca in pratica l'esecuzione della pagina html...