Autore Topic: Problema gestione AsyncTask  (Letto 555 volte)

Offline RogoMantiK

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xperia Neo
Problema gestione AsyncTask
« il: 09 Agosto 2012, 16:55:26 CEST »
0
Ho fatto un programma che prevede l'aggiunta di view tramite AsyncTask ma queste view possono essere anche un centinaio ( che inserisco tramite un ciclo for nella funzione doinbackground) ed ho un problema sulla gestione del processo.
in pratica se premo il bottone fisico del telefono back l'applicazione torna nell'activity precedente ma il ciclo non si interrompe ho visto l'help di android e parla di usare .cancel() e di fare un controllo in doinbackground tramite .iscancelled() ma il ciclo non si interrompe. se riavvio l'activity riprende da dove era terminato.
ho provato sia a fare un controllo

if( caricaleview.isCancelled()) return null;
ed anche
if( caricaleview.isCancelled()) contatore = [numero finale del ciclo];

ho provato pure a mettere caricaleview.cancel(); dentro onpause e ondestroy ma niente, anzi il ciclo viene ripetuto due volte senza azzerarsi

come posso interrompere un AsyncTask immediatamente ??

poi ho un problema secondario, in do in background ci ho messo
.addview(miavista);
ed anche
vistaattuale.settext(Integer.tostring(contatore));
per avere un feedback dell'avanzamento delle aggiunte delle viste.
per valori piccoli il contatore incrementa di uno ma man mano che le viste aumentano il contatore inizia ad incrementarsi di intervalli anche molto grandi...ed il logcat da l'info "skipped 500 o anche 1000 frames, the provcess is doing to much work?"

e come posso ovviare a questo problema?

grazie