2010-12-13 18 views
19
can anybody have any idea how to stop ASyncTask thread in android?. 

In realtà ho un ciclo che crea i thread e li esegue. e quando questo ciclo finirà voglio fermare tutti i thread che sono stati eseguiti. c'è comunque un modo per fermare i thread?come interrompere il thread ASyncTask in Android

grazie mille.

+0

Cosa ti fa pensare che si biforcano le discussioni in un ciclo è una buona idea, in primo luogo? – CommonsWare

risposta

41

Nella mia esperienza con AsyncTask, chiamare cancel(boolean mayInterruptIfRunning) non interrompe necessariamente l'esecuzione del processo in background. Tutto ciò che sembra accadere è che il AsyncTask eseguirà onCancelled() e non sarà eseguito onPostExecute() al termine. Il comportamento probabilmente dipende esattamente dal codice che si ha in doInBackgound()

+20

Vero. Controllare isCancelled() regolarmente in doInBackground() per vedere se è necessario interrompere il lavoro e terminare. – icyerasor

1

Nel mio caso eseguo richieste server con HttpPost, HttpGet e così via. L'unico modo che ho trovato per terminare un'AsyncTask stava chiamando il metodo abort() come si può vedere nel seguente esempio

if (isCancelled) { 
    try { 
     //cancel the task and immediately abort the HttpRequest 
     uploadTask.cancel(true); 
     post.abort(); 
    } catch (UnsupportedOperationException e) { 
     e.printStackTrace(); 
    } 
} 
Problemi correlati