Workshop AsyncTask
Exemple :
Boucle FOR de 1000000 it rations non bloquante.
Objectif :
Comment utiliser les AsyncTask.
Contexte :
Comme son nom lindique, une AsyncTask permet de r aliser des t ches de mani re asynchrone, la
mani re de la classe Thread. Lavantage de lAsyncTask est sa simplicit dutilisation et
dimpl mentation. Le Thread secondaire est cr automatiquement et la communication entre les
diff rents Thread est simplifi e.
Advertisement
Lors du d veloppement dune application, il faut bien avoir en t te que toutes les t ches
consommatrices de ressources (requ tes http, calculs lourds, &) doivent se faire dans un Thread
s par . En effet, le syst me affiche un message derreur et ferme lapplication lorsque le Thread
principal (appel UI Thread) est bloqu trop longtemps.
Enonc :
Utiliser une AsyncTask pour la r alisation dune boucle FOR de 1000000 it rations.
Donn es :
-
-
Projet dune application avec bout de code de lAsyncTask compl ter.
Advertisement
Linterface contient :
1. Un bouton pour lancer la tache (Button : btnLaunch)
2. Un Textview explicatif.
3. Une progressBar pour lavancement du calcule (ProgressBar: pBAsync)
Etapes suivre :
On cr e une classe qui h rite dAsyncTask, et on impl mente les m thodes manquantes,
les trois param tres attendus lors de la d claration sont des types g n riques dont voici la
signification :
Advertisement
Le premier est le type des param tres fournis la t che
Le second est le type de donn es transmises durant la progression du traitement
Enfin le troisi me est le type du r sultat de la t che
Une AsyncTask doit obligatoirement impl menter la m thode doInBackground. Cest elle qui
r alisera le traitement de mani re asynchrone dans un Thread s par ,
les m thodes onPreExecute (appel e avant le traitement),
onProgressUpdate (appel e lorsque vous souhaitez afficher sa progression),
(NB :On ne doit pas appeler la m thode onProgressUpdate directement)
et onPostExecute (appel e apr s le traitement) sont optionnelles, et un appel la
m thode publishProgress permet la mise jour de la progression.
Advertisement
On fait appel notre classe de traitement dans le bouton,
NOTE: Attention, les trois m thodes (onPreExecute, onProgressUpdate et onPostExecute)
sex cutent depuis lUI Thread ! Cest dailleurs gr ce cela quelles peuvent modifier linterface. On
ne doit donc pas y effectuer de traitements lourds.
Ce qui donnera :
Bon Travail J