Dans le cours : Développer des applications avec Android

Découvrir l'AsyncTask

Nous allons maintenant ajouter à la ListePersonnesActivity de l'AsyncTask, donc des tâches asynchrones. Pour cela, je vais ajouter pas mal de codes. En collant, avec CTRL+V, vous pouvez voir qu'on me demande d'importer certaines choses. Si cela vous arrive, cliquez sur OK. Et vous pouvez, maintenant, voir que j'ai créé un companion object. Un companion object est l'équivalent Java d'une classe statique. « Statique » veut dire que vous pourrez utiliser des fonctions d'une classe sans avoir besoin d'instancier cette classe, c'est-à-dire, de la garder en mémoire. Dans notre cas, l'AsyncTask et la mémoire travaillent de pair, c'est pour cela que nous avons besoin d'utiliser un companion object, parce qu'il est possible que notre tâche asynchrone continue, alors que notre activité est censée être morte. Il sera donc important de respecter cette norme de companion object, et de class internal constructor. Class Loadingtask internal constructor va nous permettre, dans le constructeur, d'ajouter le contexte : la Liste de Personnes Activity. En passant le contexte, nous pouvons utiliser l'interface graphique et, donc, appliquer des modifications. Vous pouvez voir ensuite que j'hérite de AsyncTask. Cet aspect est déjà présent dans ListePersonnesActivity pour AppCompatActivity. L'héritage va vous permettre d'utiliser les fonctions d'une classe, ou même ses variables et parfois même de les modifier. Vous pouvez voir override fun onCreate pour AppCompatActivity. OnCreate est une fonction qui lui appartient. Mais nous avons réécrit, avec override, cette fonction pour modifier son fonctionnement. C'est exactement ce que nous faisons avec AsyncTask. Vous pouvez voir plusieurs fonctions : override fun doInBackground, onPreExecute, onProgressUpdate. Plusieurs fonctions seront modifiées pour notre utilisation. Vous pouvez voir trois types, maintenant : deux String et un Integer, un nombre entier, et des chaînes de caractères. La première, sont les paramètres envoyés dans notre classe, c'est-à-dire les données que vous allez recevoir. Elles seront donc de type chaînes de caractères. Le deuxième type définit le type de valeur que vous renverrez pour notifier de la progression de la tâche. Et le dernier, le nombre entier, sera le type de retour quand votre tâche sera terminée. Dirigeons-nous, maintenant, vers private val activityReference equal, égale, WeakReference (context). « Context » est une référence à ListePersonnesActivity, dans notre constructeur. Cette WeakReference va nous permettre d'utiliser notre contexte donc notre activité, uniquement, si elle existe encore en mémoire. C'est-à-dire que si elle n'existe plus en mémoire, WeakReference renverra « null ». Les quatre fonctions importantes maintenant doInBackground, onPreExecute, onProgressUpdate et onPostExecute sont toutes des fonctions provenant de AsyncTask. Vous pouvez le repérer au mot-clé override. DoInBackground recevra donc vararg qui définit un tableau de données, les données que nous recevrons et que nous devrons traiter. Cette fonction renverra soit un nombre entier, soit un null que nous pouvons voir ici. Il est important de savoir que DoingBackground n'est pas sur le Thread principal. Les autres fonctions le sont, mais DoingBackground ne sera pas exécuté sur le Thread principal et donc ne devra jamais faire de modifications sur l'interface graphique. Les trois autres fonctions, elles, à l'inverse sont dédiées aux modifications sur l'interface graphique et donc ne devrons pas effectuer de traitements, ou en tout cas, des traitements rapides. OnPreExecute va modifier l'interface ou renvoyer des valeurs avant l'exécution de votre tâche. OnProgressUpdate va vous permettre de notifier de l'avancement de votre tâche. Et onPostExecute, quant à lui, vous notifiera une fois la tãche terminée.

Table des matières