Présentation des activités

Introduction aux activités dans Android

Ce site ne sera plus alimenté de contenu après août 2014. Tous les nouveaux articles seront redigés pour www.waitingforcode.com

Dans l'article introductif on a expliqué l'importance des activités (activity en anglais). Ce sont des éléments centraux de l'application qui s'occupent de gérer le cycle de vie d'un écran (initialisation, démarrage, arrêt, redémarrage, fin). Cet article présentera plus en détail ce composant d'une application Android. On verra aussi comment l'implémenter et comment gérer ses états, en se basant sur l'exemple de l'application qu'on développe.

Cycle de vie d'une activité

Chaque activité commence à vivre grâce à la méthode onCreate(). C'est elle qui effectue toute l'initialisation des données. Ensuite on déclenche onStart() afin d'afficher l'écran préparé à l'utilisateur. La troisième méthode appelée dans le déploiement est onResume() grâce à qui l'application peut commencer à interagir avec l'utilisateur.

L'application peut cesser d'être en communication avec l'utilisateur. La méthode onPause() désactive l'activité en cours. Elle peut être utile pour décharger l'application et, par exemple, sauvegarder les données dans la base ou arrêter les processus gourmands (animations, chargement des ressources depuis les web services). Une autre méthode sert à arrêter complètement l'activité. Elle s'appelle onStop(). Elle est invoquée quand son activité n'est plus visible à l'utilisateur. La troisième méthode du groupe "destructeurs et désactivateurs" est utilisée pour détruire l'activité. Il s'agit de l'onDestroy(). Elle est invoquée quand quelqu'un fait appel à finish() ou quand le système a besoin d'espace pour fonctionner.

Une dernière méthode qui sert à gérer le cycle de vie d'une activité est onRestart(). Elle est invoquée après onStop() et est suivi par onStart(). On peut donc deviner que son but est de redémarrer une activité arrêtée.

Exemple pratique d'une activité

Notre application contiendra une classe de base, BaseActivity, qui implémentera les points partagés par toutes les activités : création de menu, destruction de l'activité, gestion de réponses ainsi que l'affichage des erreurs. Elle héritera aussi de FragmentActivity ce qui nous permettra de l'utiliser aussi dans les écrans dont l'affichage se base sur les onglets.

Or, il est important de savoir, que l'activité, à part de gérer ses cycles de vie, gère également tout ce qui se passe sur l'écran. Elle se charge donc de créer le menu d'options et d'effectuer une action après le choix d'une option de ce menu. Ces deux opérations se font respectivement dans les méthodes onCreateOptionsMenu() et onOptionsItemSelected(). Dans notre application on va les utiliser pour changer la version linguistique de l'application.

Deux autres fonctions de BaseActivity, checkBorrowingsToReturn() et handleBorrowingsToReturnResponse(), s'occuperont de retourner une réponse à l'utilisateur quand celui-ci va demander au web service s'il y a des livres à retourner.

La fonction refreshActivity() fait appel à la méthode qu'on a déjà mentionnée, finish(). Le rôle de cette première consiste donc à refraîchir une activité après avoir détruit l'activité en cours.

showErrorBox() s'occupe de générer un dialogue avec le message d'erreur. handleResponseType() a pour but de gérer la réponse du web service.

En ce qui concerne onDestroy(), cette méthode est cruciale dans la gestion de connexion à la base de données. Si une connexion a été ouverte, elle est fermée dans onDestroy(). Cela nous permet d'éviter d'avoir des exceptions SQLite sur la connexion non réutilisable, du type java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase.

Voici le code de notre activité de base :

afficher le code

Bartosz KONIECZNY Activités

Une question ? Une remarque ?

*

*

Un conseil PHP

Comment créer un signature key pour OAuth

Un signature key est l'un des deux composants qui constituent la signature de la requête OAuth. Il est composé de : - la clé secrète que le fournisseur (Google, Yahoo...) attribue au client, elle doit être toujours présente dans le signature key - le ticket secret qui est renvoyé à de différentes étapes de l'échange avec le web service du fournisseur; s'il est absent (comme lors de la récupération du ticket de la requête), il faut alors passer une chaîne de caractères vide Les deux paramètres doivent être encodés. Une méthode pour générer le signature key peut se présenter ainsi :

function setSignatureKey($tokenSecret)
{
  return str_replace('%7E', '~', rawurlencode($this->userData['secret'])).'&'.str_replace('%7E', '~', rawurlencode($tokenSecret));
}