Vous êtes sur la page 1sur 21

Chapitre 2 :

Les activités

34
Définition
● Une activité (Activity) = une IHM pour un cas d’utilisation (cf cours UML) :
Exemple : Soit une application d’envoi de SMS
○ Une activité pour choisir un contact dans le répertoire
○ Une activité pour la saisie du message
○ Une activité pour afficher le journal des envois

● D’un point de vue opérationnel :


○ Une activité doit hériter de la classe android.app.Activity
○ Une activité est indépendante des autres activités MAIS :
■ Il faut désigner une activité de départ (celle qui sera utilisée en 1er)
■ Il faut chainer les activités (une activité doit activer la suivante)
○ Nous considérons dans notre cours qu’une activité est liée à un layout XML.
35
Activité
● Une activité est la composante principale pour une application Android. Elle
représente l’implémentation métier dans une application Android, permettant
de gérer l’ensemble des vues et ressources.

● Une activité peut être avec ou sans interface utilisateur. Il est possible d’avoir
plusieurs activités dans le même programme. Elle doit toujours être déclarée
dans le fichier Manifest.xml.

● Une activité n’est pas linéaire, elle est soumise à plusieurs évènements.
Chaque événement est représenté dans une méthode. 36
Activité
● Une activité est composée de deux volets:
○ Sa logique métier et la gestion de son cycle de vie
■ Implémentés en Java dans une classe héritant de Activity
○ Son interface utilisateur: deux façons alternatives pour sa
définition
■ Programmative: dans le code de l’activité
■ Déclarative: dans un fichier XML

37
Activité:
Création d’un écran
● Chaque écran est géré par une instance d’une sous-classe de Activity que
vous programmez.
● Vous surchargerez sa méthode onCreate selon ce qui doit être affiché sur
l’écran :

● L’interface est mise en place par setContentView ( identifiant de ressource).


38
Activité:
Structure d’une interface utilisateur
● L’interface d’une activité est composée de vues :
○ vues élémentaires : boutons, zones de texte, cases à cocher, etc.
○ vues de groupement : elles permettent l’alignement des autres vues
● Chaque vue est gérée par un objet Java. Ces objets ne sont pas créés
manuellement, mais par l’intermédiaire d’un fichier XML.
● Le fichier XML définit les vues à créer. Il est lu automatiquement par le système
Android lors du lancement de l’activité et transformé en objets Java.
● Chaque objet Java est retrouvé grâce à un « identifiant de ressource ».

39
Cycle de vie d’une activité
Démarrage d’une Application
● Au début, le système Android lance l’activité qui est marquée action=MAIN et
catégorie=LAUNCHER dans AndroidManifest.xml.

● Ensuite, d’autres activités peuvent être démarrées. Chacune se met « devant » les
autres comme sur une pile. Deux cas sont possibles :
○ La précédente activité se termine, on ne revient pas dedans.
Exemple: une activité où on tape son login et son mot de passe lance l’activité principale et
se termine.

○ La précédente activité attend la fin de la nouvelle car elle lui demande un résultat en retour.
Exemple : une activité de type liste d’items lance une activité pour éditer un item quand on
clique longuement dessus, mais attend la fin de l’édition pour rafraîchir la liste.
40
Cycle de vie d’une activité
https://developer.android.com/guide/components/activities/activity-lifecycle.html

● Voyons maintenant comment fonctionnent les activités.


○ Démarrage (à cause d’un Intent)
○ Apparition/masquage sur écran
○ Terminaison

● Une activité se trouve dans l’un de ces états :


○ Active (resumed) : elle est sur le devant, l’utilisateur peut jouer avec,
○ En pause (paused) : partiellement cachée et inactive, car une autre activité est venue
devant,
○ Stoppée (stopped) : totalement invisible et inactive, ses variables sont préservées
mais elle ne tourne plus.

41
Cycle de vie d’une activité
https://developer.android.com/guide/components/activities/activity-lifecycle.html

42
Cycle de vie d’une activité
https://developer.android.com/guide/components/activities/activity-lifecycle.html

43
Cycle de vie d’une activité
https://developer.android.com/guide/components/activities/activity-lifecycle.html

• Appelée à la création d’une activité.


• L’interface graphique est crée mais l’utilisateur
ne la voit pas encore et ne peut pas interagir
avec.

44
Cycle de vie d’une activité
https://developer.android.com/guide/components/activities/activity-lifecycle.html

Appelée quand l’application est démarrée mais non


interactive

45
Cycle de vie d’une activité
https://developer.android.com/guide/components/activities/activity-lifecycle.html

• Appelée quand l’application passe (ou repasse) en


avant-plan.
• L’activité devient entierement opérationnelle.

46
Cycle de vie d’une activité
https://developer.android.com/guide/components/activities/activity-lifecycle.html

Appelée quand l’application passe en arriere-plan


et qu’une autre application se met devant

47
Cycle de vie d’une activité
https://developer.android.com/guide/components/activities/activity-lifecycle.html

Appelée quand l’application n’est plus visible

48
Cycle de vie d’une activité
https://developer.android.com/guide/components/activities/activity-lifecycle.html

Appelée quand l’application redevient visible

49
Cycle de vie d’une activité
https://developer.android.com/guide/components/activities/activity-lifecycle.html

Appelée quand l’application est fermée par :


• le système à cause d’un manque de ressources, ou
• l’utilisateur à l’utilisation d’un finish(). 50
Activité
Récapitulons !!!!
Les fichiers sources représentant le comportement de l’application sont définis
dans le dossier java, dans une arborescence de packages

51
Activité
Récapitulons !!!!
Chaque activité doit :
• Être définie dans un fichiers .java à part
•Hériter (directement ou indirectement) de la classe android.app.Activity

52
Activité
Récapitulons !!!!
• Implémenter la méthode onCreate() pour définir le comportement de l’activité à sa création.
• Appeler la méthode setContentView() dans le code de onCreate pour définir le layout de cette
activité (fichier Layout XML associé)

53
Activité
Récapitulons !!!!
L’implémentation des autres méthodes de transition (onPause, onDestroy …) est optionnelle

54

Vous aimerez peut-être aussi