Conception et Développement d’Applications Mobiles
2020-2021
Chp5 : Développement Android
Cycle de Vie, Composants Principaux, Comportement…
Slide 1
PLAN
Chp4 : Développement Android
1. Environnement de Développement Android
2. Architecture Android
3. Conduite d’un Projet d’App. Android
4. Structure d’une Application Android
5. Cycle de Vie d’une Application Android
6. Éléments de Base d’une Application Android
7. Services Android
Slide 2
1. Environnement de Développement
2. Android Architecture Android
3. Conduite d’un Projet d’App. Android
4. Structure d’une Application Android
5. Cycle de Vie d’une Application
6. Android Éléments de Base d’une
7. Application Android Services Android
Chp4 : Développement Android
ENVIRONNEMENT DE DÉVELOPPEMENT ANDROID
Slide 3
Android pour le Développement Mobile
Environnement de Développement Android
• Android fait partie d’une nouvelle vague de SE conçus
pour du HW plus performant
• Windows Phone
• BlackBerry OS
• Apple iPhone
• Android se distingue par son offre d’environnement de Dév. Ouvert
• Basé sur le noyau open source Linux
• Accès complet aux ressources HW
• Applications natives ou tierces sont au même niveau
• Utilisation de la même API
• Exécution sur le même run time
Slide 4
Android…
Environnement de Développement Android
“The first truly open and comprehensive platform for mobile
devices, all of the software to run a mobile phone but without
the proprietary obstacles that have hindered mobile innovation."
Andy Rubin
Cofon d at eur et ancien CEO de Danger Inc. et du Système d’Exploitation Android Inc.
h ttp ://go o gleb lo g.b lo gsp o t.c o m/2007/11/wh er es-my-gp h o n e.h tml
Slide 5
Android est:
Environnement de Développement Android
• Une combinaison de trois éléments:
1. Un système d’exploitation open source pour terminaux mobiles
2. Une plateforme de dév. open source pour créer des
applications mobiles
3. Terminaux, particulièrement téléphones mobiles,
qui exécutent le système d’exploitation Android et
les applications mobiles conçues pour ce système
Slide 6
Distribution des Versions (Avril 2015)
Environnement de Développement Android
[Link]
Slide 7
1. Environnement de Développement
2. Android Architecture Android
3. Conduite d’un Projet d’App. Android
4. Structure d’une Application Android
5. Cycle de Vie d’une Application
6. Android Éléments de Base d’une
7. Application Android Services Android
Chp4 : Développement Android
ARCHITECTURE ANDROID
Slide 8
Android SW Stack
Architecture Android
Slide 9
SW Stack (1): Linux Kernel
Architecture Android
Linux kernel (version 3.4 pour Lollipop 5.1)
• Offre les services fondamentaux : hardware drivers, process &
memory management, security, network, power management.
• Offre une couche d’abstraction entre le HW et le reste de la pile logicielle.
Slide 1 0
SW Stack (2): Android Runtime
Architecture Android
Android Runtime
• Incluant les librairies fondamentales et la machine virtuelle ART (Android
RunTime, remplaçant Dalvik officiellement depuis la version Lollipop).
• Permet l’exécution des application et représente la base du framework applicatif .
Slide 1 1
SW Stack (3): Libraries
Architecture Android
Android Libraries
• Linux kernel Libraries : diverses
librairies fondamentales de C/C++ :
• Media Framework : lecture audio /
vidéo
• Surface manager : gestion de
l’affichage
• Graphics libraries (SGL & OpenGL):
affichage 2D et 3D
• SQLite pour le support natif des
bases de données
• SSL & WebKit pour la navigation sur
internet avec le support SSL
Slide 1 2
SW Stack (4): Applications Framework
Architecture Android
Applications Framework
• Fournit les classes qui seront utilisées pour la création d’applications Android.
• Représente une abstraction pour les accès HW et prend en charge la
gestion de l’interface utilisateur et des ressources de l’application.
Slide 1 3
SW Stack (5): Applications
Architecture Android
Applications
• Toutes les applications, native ou tierces, sont basées sur la même API.
• La couche application s’ exécute sur un runtime Android en utilisant les
classes et services de fournis par la couche « Applications Framework ».
Slide 1 4
1. Environnement de Développement
2. Android Architecture Android
3. Conduite d’un Projet d’App. Android
4. Structure d’une Application Android
5. Cycle de Vie d’une Application
6. Android Éléments de Base d’une
7. Application Android Services Android
Chp4 : Développement Android
CONDUITE D’UN PROJET D’APP. ANDROID
Slide 1 5
Point de Départ: IHM & UX
Conduite d’un Projet D’App. Android
Voir [Link]
Slide 1 6
Étape 1: Planifier la Navigation entre Screens
Conduite d’un Projet D’App. Android
Slide 1 7
Étape 2: Choisir les Patrons de Navigation
Conduite d’un Projet D’App. Android
Slide 1 8
Étape 4: Définir les Screens (Wireframing)
Conduite d’un Projet D’App. Android
Slide 1 9
Étape 5: Raffiner chaque Screen
Conduite d’un Projet D’App. Android
Attention: Il faut respecter les patrons de conception Android!
Slide 2 0
Étape 6: Il Suffit de Coder…
Conduite d’un Projet D’App. Android
Slide 2 1
Liens Utiles
Conduite d’un Projet D’App. Android
[Link]
[Link]
[Link]
Slide 2 2
1. Environnement de Développement
2. Android Architecture Android
3. Conduite d’un Projet d’App. Android
4. Structure d’une Application Android
5. Cycle de Vie d’une Application
6. Android Éléments de Base d’une
7. Application Android Services Android
Chp4 : Développement Android
STRUCTURE D’UNE APPLICATION ANDROID
Slide 2 3
Environnement de Développement
Structure d’une Application Android
• Langages De Développement :
• Lang. Java avec Android SDK (Software Dev. Kit)
• Lang. C++ avec Android NDK (Native Dev. Kit)
• Utilisation d'un IDE est recommandée
• Android Studio (IntelliJ-IDEA adapté pour Android)
• Eclipse (avec le plugin ADT)
• Autres IDE peuvent être utilisés tels que NetBeans
• Un projet d’une application Android possède une
arborescence spécifique.
Slide 2 4
Arborescence d’un Projet
Structure d’une Application Android
Bibliothèques du module principal
Tests de votre application
Code source Java des applications
Images (PNG, JPEG
ou GIF) et fichiers XML
Ressources utilisées par l’application
décrivantles formes
Fichiers XML décrivant les menus
Fichiers XML représentant
l’interface d’une page ou d’une
partie de page de votre application Icônes de lancement de l’application
(classés par résolution d’écran)
Dossier contenant les fichiers décrivant
des valeurs utilisées dans l’application. Fichier de contrôle de l’application,
Ex : [Link] pour les chaînes, décrivant sa nature , ses composants
[Link] pour les tableaux… et les permissions associées
Slide 2 5
Résolutions, Densités, Différents Écrans
Structure d’une Application Android
• Iconographie sous Android
• http: //[Link] /design /style/[Link]
• Android et les icônes, mdpi, hdpi, xhdpi, xxhdpi
• http: //[Link] /2013/07/18/android-et-les-
icones-mdpi-hdpi-xhdpi-xxhdpi/
• Support de plusieurs écrans sous Android
• http: //[Link]
/guide/practices/screens_support.h tml
Slide 2 6
1. Environnement de Développement
2. Android Architecture Android
3. Conduite d’un Projet d’App. Android
4. Structure d’une Application Android
5. Cycle de Vie d’une Application
6. Android Éléments de Base d’une
7. Application Android Services Android
Chp4 : Développement Android
CYCLE DE VIE D’UNE APPLICATION ANDROID
Slide 2 7
Cycle de Vie
Cycle de Vie d’une Application Android
• Les composants (vues) d’une application ont un cycle de vie
• Un début quand Android les instancie pour répondre aux Intents
• Une fin quand les instances sont détruites
• Entre les deux, où ils peuvent être:
• Actifs ou inactifs
• Visibles ou invisibles
Vie d’une Application:
Début Actif/Inactif Fin
Visible / Invisible
Slide 2 8
Pile d’Activités
Cycle de Vie d’une Application Android
• Les activités dans une application sont gérées sous forme de Pile
• Quand une nouvelle activité démarre, elle est placée
en haut de la pile et devient l’activité en exécution
• L’ activité précédente reste en dessous dans la pile
• Elle ne revient au premier plan que si la nouvelle activité est fermée
• Si l’utilisateur clique sur le bouton Retour du téléphone
l’activité suivante dans la pile devient active
Slide 2 9
Pile d’Activités
Cycle de Vie d’une Application Android
Slide 3 0
États d’une Activité
Cycle de Vie d’une Application Android
• Active ou en Exécution
• Elle est au premier plan de l’écran (donc en haut de la pile)
• C’est l’activité ciblée par les actions de l’utilisateur
• En Pause
• A perdu le focus, mais est encore partiellement visible
• Une autre activité est en haut de la pile, mais elle
est soit transparente, soit ne couvre pas tout l’écran
• Arrêtée
• Complètement recouverte par une autre activité
• Ses informations sont encore chargées, mais elle n’est plus visible
• Peut être tuée par le système si besoin de mémoire
Slide 3 1
Évènements du Cycle de Vie d’une Activité
Cycle de Vie d’une Application Android
• Quand une activité passe d’un état à un autre,
le framework Android appelle les méthodes de
transition correspondantes (pattern IoC) :
• void onCreate(Bundle savedInstanceState) : obligatoire
• void onStart()
• void onRestart()
• void onResume()
• void onPause() : recommandée
• void onStop()
• void onDestroy()
Slide 3 2
Évènements du Cycle de Vie d’une Activité
Cycle de Vie d’une Application Android
Slide 3 3
Méthodes de Transition (1/6): onCreate
Cycle de Vie d’une Application Android
onCreate
• Appelée à la création d’une activité
• Initialisation de tous les éléments
• Un bundle est passé à cette méthode, contenant l’état précédent de
l’activité
• Toujours suivie de onStart
Slid
Méthodes de Transition (2/6): onStart / onRestart
Cycle de Vie d’une Application Android
onStart
• Appelée juste avant que l’activité ne devienne visible,
• Suivie de
• onResume si l’activité revient en premier plan
• onStop si l’activité est cachée
onRestart
• Appelée quand l’activité va
redémarrer après avoir été stoppée
• Toujours suivie de onStart
Slide 3 5
Méthodes de Transition (3/6): onResume
Cycle de Vie d’une Application Android
onResume
• Appelée juste avant que l’activité ne commence interagir avec l’utilisateur
• A ce point, l’activité est en haut de la pile
• Toujours suivie de onPause
Slide 3 6
Méthodes de Transition (4/6): onPause
Cycle de Vie d’une Application Android
onPause
• Appelée quand le système va démarrer une autre activité
• Utilisée typiquement pour
• Consigner les données non sauvegardées
• Arrêtées les animations ou tout ce qui consomme de la mémoire...
• Ne doit pas consommer beaucoup de temps, car l’activité suivante ne va démarrer
que si cette méthode retourne
• Suivie de :
• onResume si l’activité est rechargée en premier plan
• onStop si l’activité devient invisible
• Dans cet état, l’activité peut être tuée par le système
Méthodes de Transition (5/6): onStop
Cycle de Vie d’une Application Android
onStop
• Appelée quand l’activité n’est plus
visible à l’utilisateur
• Peut arriver si:
• L’activité est détruite
• Une autre activité a repris son exécution et l’a recouverte
• Suivie par:
• onRestart si l’activité recommence à interagir avec l’utilisateur
• onDestroy si l’activité va disparaître
• Dans cet état, l’activité peut être tuée par le système
Slide 3 8
Méthodes de Transition (6/6): onDestroy
Cycle de Vie d’une Application Android
onDestroy
• Appelée quand l’activité est détruite
• Dernier appel que l’activité va recevoir
• Peut intervenir si:
• L’ activité se termine (appel de finish)
• Le système détruit temporairement cette instance de l’activité pour gagner de l’espace
• On peut distinguer entre ces deux scénarios avec la méthode isFinishing()
• Dans cet état, l’activité peut être tuée par le système
Slide 3 9
Complément d’Information
Cycle de Vie d’une Application Android
• Le site [Link]
• Propose un exemple plus détaillé sur le LifeCycle
avec plusieurs activités. A tester chez vous.
• Page LifeCycle :
• [Link] [Link] /trai ni ng/basi cs/acti vi ty-li fe cyc le /i [Link]
• Lien vers le code source :
• [Link] [Link] /shareables/trai ni ng/Acti vi ty Li fecyc le. zi p
Slide 4 0
1. Environnement de Développement
2. Android Architecture Android
3. Conduite d’un Projet d’App. Android
4. Structure d’une Application Android
5. Cycle de Vie d’une Application
6. Android Éléments de Base d’une
7. Application Android Services Android
Chp4 : Développement Android
ÉLÉMENTS DE BASE D’UNE APPLICATION ANDROID
Slide 4 1
Activity (Rappel)
Éléments de Base d’une Application Android
• Une Activity est un composant d'application
• Fournit un écran avec lequel les utilisateurs peuvent interagir
avec l’application dans le but de faire quelque chose
• Téléphoner, prendre une photo, envoyez un e-mail ...
• Chaque activity est associée à une fenêtre qui
représente l’interface utilisateur
• La fenêtre remplit généralement l'écran,
• Peut être plus petite que l'écran et le flouter au-dessus
des autres fenêtres.
• L’ enchaînement des activités (fenêtres) donne une application
• Utilisation des intents
Slide 4 2
Activity (Rappel)
Éléments de Base d’une Application Android
• Classe qui hérite de Activity
• Implémente obligatoirement la méthode onCreate()
• Doit être déclarée dans le fichier [Link]
• Associée à un ou plusieurs fichiers layout
• Fichier XML qui décrit les composants graphiques de
l’interface ainsi que leurs dispositions
• Il est aussi possible de créer des éléments graphiques
dynamiquement, par programmation (@Runtime)
Slide 4 3
Disposition des Éléments Graphiques
Éléments de Base d’une Application Android
• Layout XML
• Fichier de spécification des composants graphiques d’une
application (widgets)e t de leurs conteneurs (layout) décrit en XML
• View
• Classe de base pour la création des interfaces graphiques
• Classe mère de tous les widgets utilisés pour créer des composants
graphiques interactifs (boutons, champs de texte, de saisie…)
• Il est possible d’ajouter des vues:
• @Runtime: dans le code Java de l’activité
• Statiquement: dans le code XML du layout
• ViewGroup
• Classe de base pour tous les Layouts (dispositions): conteneurs
invisibles rassemblant plusieurs Views ou ViewGroup
Slide 4 4
Disposition des Éléments Graphiques
Éléments de Base d’une Application Android
• Les ViewGroups permettent d’organiser les Views
• FrameLayout
• Li nearLayout (Vertical / Horizontal)
• TableLayout
• AbsoluteLayout
• RelativeLayout
• Webview
• Ils peuvent aussi être hiérarchiques
Slide 4 5
Intents
Éléments de Base d’une Application Android
• Un Intent : Un message asynchrone qui permet à un
composant d'une application de demander une
fonctionnalité à partir d'un autre composant Android.
• L’ autre composant peut appartenir à :
• La même application
• Une application tierce
• Au framework Android
• Exemple : Une activity peut démarrer une autre
application pour prendre une photo
Slide 4 6
Enchaînement des Activités via les Intents
Éléments de Base d’une Application Android
• On peut démarrer une autre activity via la méthode startActivity
• Prend en argument un intent qui décrit l’activity qu’on souhaite démarrer
//code java, dans l'activité appelante
Intent myIntent = new Intent
(this, [Link]);
[Link]("cle", "valeur");
startActivity(myIntent);
• Pour récupérer le contenu des variable depuis l’Intent :
//code java, dans l'activity appelée
getIntent().getStringExtra("cle")
Slide 4 7
Fragments
Éléments de Base d’une Application Android
• Un fragment représente le comportement
d'une partie d'une vue dans une Activity
• Il possède son propre cycle de vie, mais est
intiment lié à l'activité qui le contient (Expl : si
l’activité est en pause → fragment en pause)
• Doit obligatoirement être lié à une activity,
mais peut être réutilisé par une autre
• Un fragment peut être ajouté à la BackStack
• Disponible depuis Android 3.0 (API 11)
Slide 4 8
Fragments
Éléments de Base d’une Application Android
Slide 4 9
Fragments: Cycle de Vie
Éléments de Base d’une Application Android
Etat de l’Activité
Created
Started
Resumed
Slide 5 0
Fragments: Cycle de Vie
Éléments de Base d’une Application Android
Invoquée quand le fragment est associé à
une activity
Invoquée pour créer l'hiérarchie de vue
associée au fragment
Invoquée quand la méthode onCreate() de
l'activity se termine.
Slide 5 1
Fragments: Cycle de Vie
Éléments de Base d’une Application Android
Etat de l’Activité
Paused
Stopped
Destroyed
Slide 5 2
Fragments: Cycle de Vie
Éléments de Base d’une Application Android
Invoquée quand la hiérarchie de View
associée avec le fragment est enlevée.
Invoquée quand le fragment est dissocié
de l’ Activity
Slide 5 3
Autres Composants Android
Éléments de Base d’une Application Android
• Une application Android est formée d’un ensemble
de composants déclarés dans le Manifest
• Un composant peut être:
• Activity
• Broadcast Receiver
• Content Provider
• Service
Slide 5 4