Découvrir le développement d'applications avec Android 5

Comprendre l'AsyncTask

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Apprenez les bases théoriques de l'AsyncTask. Cette classe facilite la communication entre le thread principal et votre tâche asynchrone.
06:13

Transcription

Un des premiers outils à votre disposition s'appelle l'Async Task. C'est une classe fournie par le SDK qui vous permet très facilement de programmer des tâches en arrière-plan, et de récupérer des résultats au premier plan. Donc de faire l'aller-retour entre les threads secondaires et le thread principal. Puisque je vous le rappelle on peut faire des traitements longs dans le thread secondaire, mais on ne peut pas modifier l'interface graphique. Donc si vous voulez afficher par exemple, un avancement ou un résultat, sur l'interface graphique, c'est votre moyen de ramener des informations sur ce qui se passe en arrière-plan au premier plan. C'est le but justement de l'AsyncTask. C'est un élément qui est généraliste, c'est à dire qu'il ne se préoccupe pas du type de traitement que vous faites, Mais plus de vous donner la possibilité d'exécuter du code arbitraire, en arrière-plan et de vous donner les résultats au premier plan. Et c'est relativement souple, Par contre, effectivement, il y a plusieurs choses à mettre en place et à bien comprendre pour s'en servir. Nous allons voir ça avec un exemple. Donc, ce qu'on va faire dans notre projet, on va imaginez qu'on a un objet qui va gérer du cache, c'est à dire qu'avant de télécharger, on va vérifier dans le cache local si on aurait pas déjà les données pour pas les télécharger pour rien. Le cache local, ça peut être n'importe quoi, du SQLite ou XML ou autre, Peu importe, on va pas vraiment le faire, c'est juste pour votre montrer quelque chose qui pourrait être utile. Donc j'ai créé un nouveau package data. C'est juste pour avoir une petite séparation entre nos classes graphiques, et nos autres classes de données, qui permettent de manipuler et de gérer les données. Et de garder un modèle vraiment très simple d'organisation. On va l'appeler CacheChecker. Donc ce sera une classe qui va nous permettre de faire une vérification. dans le cache. Pour quelle soit compatible avec une Async Task, extends... Async Taks, et il va falloir lui passer 3 paramètres. Le premier paramètre, ça va être le type de données que vous allez lui faire passer pour qu'elle commence à travailler. C'est à dire qu'à chaque fois que vous allez faire appel à ce CacheChecker, il faudra lui passer des données, il faudra lui donner quelque chose, vous êtes au premier plan, vous lui donnez par exemple des mots-clés, et lui, il va chercher ces mots-clés dans son cache. Ça peut être des mots-clés, donc par exemple, ce sera de type "chaine de caractères". Donc ça, c'est le type de données que vous avez vu passer en entrée. Lui, il les fera passer au second plan pour travailler avec. Ensuite, si lui, il doit vous donner des informations sur l'avancement, le progrès, en pourcentage, par exemple, il faudra lui donner quel type de données représente l'avancement. Le plus simple, c'est de passer des entiers, et de donner un nombre compris entre 0 et 100. Comme ça, on sait facilement comment le gérer sur l'interface. Pour passer des entiers vous ne pouvez pas utiliser le type int standard, Vous devez lui passer Integer, qui est la classe qui représente vraiment le type int. Parce qu'il y a besoin d'une classe, et int, c'est pas une classe. Donc Integer, c'est l'équivalent au format classe, de l'entier. Et enfin, il me demande pour le résultat. Quel sera le type de données qui sera retourné en résultat. Nous, on va retourner une chaine de caractères aussi. Donc quand il aura terminé en arrière-plan et qu'il aura obtenu un résultat final, Il va vous le retourner au format "chaine de caractères". Sachant que chacun de ces trois paramètes est facultatif. Si vous n'avez rien à lui passer au départ vous pouvez remplacer ceci par Void, Ça aurait été marrant, mais ça peut arriver. Vous pouvez vous organiser autrement pour lui passer les données. Avec un V majuscule, c'est volontaire, c'est pas une erreur. C'est un V majuscule. Pareil pour celui, si vous ne voulez pas modéliser le progrès ou l'avancement, vous pouvez mettre Void. Donc pour chacun de ces trois paramètres, vous mettez soit le type vraiment utilisé, soit Void. Nous, on va garder ça pour notre exemple. Et ensuite vous allez devoir redéfinir des méthodes. Donc il y en a une qui est obligatoire, si je fais ALT+Entrée, il me dit qu'on est obligé d'implémenter au minimum la méthode doInBackground. Ç paraît logique puisque c'est la méthode principale, c'est celle qui va faire le travail en arrière-plan. On voit qu'elle reçoit en paramètre des chaines de caractères. Pourquoi ? Parce qu'on lui a dit que ce qu'on ferait passer au CacheChecker, ce serait les chaines de caractères. Donc automatiquement, il créé une variable de type "tableau de chaines de caractères". Alors je ne sais pas si vous avez vu ça en Java, mais ça permet en fait, avec des points de suspension, de créer automatiquement un tableau, avec toutes les chaines de caractères qui auront été passées entre parenthèses. Ben tiens, je vais vous montrer comment ça marche. Quand la personne va appeler votre méthode elle va d'abord devoir se créer... ... CacheChecker... Un objet CacheChecker... ...new ... CacheChecker... Et ensuite, pour exécuter les tâches de fond, il faudra qu'elle appelle la méthode Execute, qui est non bloquante, c'est à dire qu'elle prend juste quelques, on va dire, millisecondes. Et on va dire, et bien ... data 1, virgule... ... data 2 ... virgule ... Donc, en faisant ça, j'ai créé un objet CacheChecker, qui lui hérite de Async Task Et je lui dis d'exécuter ce qu'elle a à faire en tâche de fond, en lui passant trois paramètres qui sont bien de type chaine de caractères. Le fait que j'en ai mis trois, ça va créer un tableau, avec 3 paramètres qui seront : data 1, data 2, data 3. Ce sera dans Param, c'est un tableau de 3 chaines de caractères. Si vous n'en mettez qu'un seul, vous aurez quand même un tableau, avec une seule chaine de caractères. En fait, ces trois points de suspension, ça permet de fabriquer des tableaux à la volée quand vous passez un ou plusieurs paramètres, sans avoir à créer les tableaux ici. Et, ce type de retour correspond au résultat que vous aurez à la fin de votre traitement. Donc cette méthode-là, elle se fera en tâche de fond, dans un thread secondaire, et ne bloquera pas l'interface graphique. Vous avez d'autres méthodes à utiliser. À redéfinir, donc celles qui m'intéressent, ce sont celles-ci et, et ces trois premières... sont les plus importantes à voir. Donc on a onPreExecute, onProgressUpdate et onPostExecute. Ce sont trois méthodes qui seront exécutées sur le thread principal. C'est à dire que depuis ces méthodes-là, vous pourrez modifier l'interface graphique de votre application, sans problème. Celle-ci sera appelée avant qu'il commence tout travail. Ensuite, celle-ci sera appelée quand vous, là-dedans, vous déclencherez un appel spécial qui va faire passer des données sur le thread principal, pour indiquer de l'avancement. On va voir ça après, dans l'exemple. Et celle-ci, c'est quand vous allez retourner un résultat, cette chaine de caractère va être retournée. Et elle arrivera ici, en paramètre, mais cette fois-ci on sera au premier plan Donc on retourne quelque chose en arrière-plan, qui arrive au premier plan dans le onPostExecute, qui va vous permettre, encore une fois, de modifier votre interface graphique pour dire que vous avez terminé votre chargement. Nous allons maintenant, dans la prochaine vidéo, faire un exemple concret d'utilisation d'une Async Task. En se basant là-dessus, remplir ces méthodes pour faire quelque chose d'intéressant.

Découvrir le développement d'applications avec Android 5

Développez des applications mobiles pour Android. Créez un projet de A à Z sous Android Studio, de l’installation du kit de développement, jusqu’à sa publication sur le Play Store.

3h17 (39 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Android Android 5
Spécial abonnés
Date de parution :17 mars 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !