Autore Topic: chiudere AsyncTask  (Letto 864 volte)

Offline Peppe_2703

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
chiudere AsyncTask
« il: 21 Settembre 2011, 11:36:10 CEST »
0
Salve ragazzi

avrei un problema, ho creato una attività che richiama una classe che estende AsyncTask faccio la mia logica nel doInBackground poi ad un certo punto nella mainActivity voglio chiudere AsyncTask per poterlo rilanciare ma se faccio AsyncTask.cancel(true) non sempre me lo chiude anzi quasi mai. Qualcuno sa spiegarmi perchè

grazie

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:chiudere AsyncTask
« Risposta #1 il: 21 Settembre 2011, 11:42:07 CEST »
0
Credo che questo sia dovuto al fatto che in Java non c'è un modo per killare un thread, devi aspettare che finisce il metodo run.
Tuttavia se nel metodo doInBackground esegui delle operazioni iterativamente (con un cicli while o for) poi sempre interrompere tale ciclo se rilevi che l'AsyncTask è stato cancellato.

Offline Peppe_2703

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
Re:chiudere AsyncTask
« Risposta #2 il: 21 Settembre 2011, 11:46:57 CEST »
0
si ma allora a che serve quel metodo cancel() e soprattutto non capisco come mai a volte funziona e altre volte no, il fatto è che se non chiudo il servizio non posso rilanciarlo altrimenti mi da errore dicendomi che il servizio e ancora running

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:chiudere AsyncTask
« Risposta #3 il: 21 Settembre 2011, 12:37:32 CEST »
0
Anche dove possibile, la possibilità di uccidere un thread dall'esterno è qualcosa che secondo me è sempre da NON fare. Per me equivale a spegnere un computer staccando la spina dal muro: funziona, ma non è bene.

Molto più elegante e corretto prevedere l'uscita dal thread in modo naturale: cioè prevedere di poter mandare al thread il comando di "uscita" (vedi se meglio con messaggio o variabile sincronizzata) e lui quando è nella condizione opportuna "esce".
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store