Workshop AsyncTask

Page 1 sur 3Lecteur de document UniversityLib

Workshop AsyncTask

Mobile Application Development - Async Programming · notes

Voir tous les documents en programmation

Workshop AsyncTask

Exemple :

Boucle FOR de 1000000 itérations non bloquante.

Objectif :

Comment utiliser les AsyncTask.

Contexte :

Comme son nom l’indique, une AsyncTask permet de réaliser des tâches de manière asynchrone, à la manière de la classe Thread. L’avantage de l’AsyncTask est sa simplicité d’utilisation et d’implémentation. Le Thread secondaire est créé automatiquement et la communication entre les différents Thread est simplifiée.

Lors du développement d’une 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 d’erreur et ferme l’application lorsque le Thread principal (appelé UI Thread) est bloqué trop longtemps.

Publicité

Enoncé :

Utiliser une AsyncTask pour la réalisation d’une boucle FOR de 1000000 itérations.

Données :

- -

Projet d’une application avec bout de code de l’AsyncTask à compléter. L’interface contient :

1. Un bouton pour lancer la tache (Button : btnLaunch) 2. Un Textview explicatif. 3. Une progressBar pour l’avancement du calcule (ProgressBar: pBAsync)

Etapes à suivre : On crée une classe qui hérite d’AsyncTask, 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 :

Publicité

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. C’est 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),

Publicité

(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.

On fait appel à notre classe de traitement dans le bouton,

NOTE: Attention, les trois méthodes (onPreExecute, onProgressUpdate et onPostExecute) s’exécutent depuis l’UI Thread ! C’est d’ailleurs grâce à cela qu’elles peuvent modifier l’interface. On ne doit donc pas y effectuer de traitements lourds.

Ce qui donnera :

Bon Travail 