Autore Topic: Problema con AsyncTask all'interno di un altra AsyncTask  (Letto 519 volte)

Offline lz91

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S I-9000
  • Sistema operativo:
    Ubuntu, Windows 7
Problema con AsyncTask all'interno di un altra AsyncTask
« il: 05 Maggio 2013, 14:08:19 CEST »
0
Salve ragazzi, :-)

Volevo chiedere un chiarimento e una soluzione se è possibile O:-) ....
Dopo aver fatto partire una thread Async (chiamiamola thrA1), volevo che nel metodo doInBackground far partire un altra thread Async ( chiamiamola thrA2 ).
Ho provato a farlo, ma non so per quale motivo la thread thrA1 viene eseguita, invece la thrA2 non parte neanche.
Nel LogCat non mi appare niente, proprio nessun errore.
Ho provato a inserire dei Log all'interno dell thrA2 ma non vengono visualizzati. E' come se non venisse neanche eseguita.

Vi semplifico un po il codice, per farvi un esemprio di come l'ho fatto:

Codice (Java): [Seleziona]
public class thrA1 extends AsyncTask<Void, Integer, Void>  {

thrA2 thread2 =  null;
.....
protected Void doInBackground(Void... arg) {

//ciclo infinito
while(true){
//prima parte del codice dove interrogo il Server

thread2 = new thrA2();                 
thread2.setMainActivity( mainActivity );  //passo dei parametri alla thread2
thread2.execute();

//seconda parte del codice che funziona
}

}


Preciso che ho provato a far partire la thread thrA2 all'interno del mainActivity e funziona. Ma ovviamente non è il risultato che volevo :)
Sapete dirmi qualè il mio errore?
grazie in anticipo :-P

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Problema con AsyncTask all'interno di un altra AsyncTask
« Risposta #1 il: 05 Maggio 2013, 15:39:16 CEST »
+1
Come scritto qua sotto Order of execution, aparte le API da Donut a Honeycomb, gli AsyncTask vengono eseguiti in serie, non in parallelo. Quindi il secondo task viene eseguito dopo il primo.
La domanda quindi é, dopo che thrA1 finisce, non viene eseguito thrA2?
Se il problema é questo e vuoi eseguire i due task in parallelo, basta seguire ciò che c'é scritto sempre nello stesso paragrafo:
Citazione
If you truly want parallel execution, you can invoke executeOnExecutor(java.util.concurrent.Executor, Object[]) with THREAD_POOL_EXECUTOR.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline lz91

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S I-9000
  • Sistema operativo:
    Ubuntu, Windows 7
Re:Problema con AsyncTask all'interno di un altra AsyncTask
« Risposta #2 il: 06 Maggio 2013, 23:06:22 CEST »
0
Grazie ho provato e funziona  :-P