Vous êtes sur la page 1sur 48

Formation Mobile

27 Aout au 1 Septembre 2015

Développement Android
Cycle de Vie, Composants Principaux, Comportement…

Dr. Lilia SFAXI


Slide 1
www.liliasfaxi.wix.com /liliasfaxi
Développement Android

ENVIRONNEMENT DE DÉVELOPPEMENT ANDROID

Dr. Lilia SFAXI


Slide 2
www.liliasfaxi.wix.com /liliasfaxi
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 runtime

Dr. Lilia SFAXI


Slide 3
www.liliasfaxi.wix.com /liliasfaxi
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
Cofondateur et ancien CEO de Danger Inc. et du Système d’Exploitation Android Inc.
http://googleblog.blogspot.com/2007/11/wheres-my-gphone.html

Dr. Lilia SFAXI


Slide 4
www.liliasfaxi.wix.com /liliasfaxi
Android est:
Environnement de Développement Android

•  Une combinaison de trois éléments:


1.  Un système d’e xploitation open source pour terminaux mobiles
2.  Une plateforme de développement open source pour créer des
applications mobiles
3.  Terminaux, particulièrement téléphones mobiles, qui exécutent
le système d’e xploitation Android et les applications mobiles
conçues pour ce système

Dr. Lilia SFAXI


Slide 5
www.liliasfaxi.wix.com /liliasfaxi
Distribution des Versions (Avril 2015)
Environnement de Développement Android

https://developer.android.com/about/dashboards/index.html

Dr. Lilia SFAXI


Slide 6
www.liliasfaxi.wix.com /liliasfaxi
Développement Android

ARCHITECTURE ANDROID

Dr. Lilia SFAXI


Slide 7
www.liliasfaxi.wix.com /liliasfaxi
Android SW Stack
Architecture Android

Dr. Lilia SFAXI


Slide 8
www.liliasfaxi.wix.com /liliasfaxi
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.

Dr. Lilia SFAXI


Slide 9
www.liliasfaxi.wix.com /liliasfaxi
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 .

Dr. Lilia SFAXI


Slide 10
www.liliasfaxi.wix.com /liliasfaxi
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

Dr. Lilia SFAXI


Slide 11
www.liliasfaxi.wix.com /liliasfaxi
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.

Dr. Lilia SFAXI


Slide 12
www.liliasfaxi.wix.com /liliasfaxi
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 ».

Dr. Lilia SFAXI


Slide 13
www.liliasfaxi.wix.com /liliasfaxi
Développement Android

CONDUITE D’UN PROJET D’APP. ANDROID

Dr. Lilia SFAXI


Slide 14
www.liliasfaxi.wix.com /liliasfaxi
Point de Départ: IHM & UX
Conduite d’un Projet D’A pp. Android

Voir http://developer.android.com/training/design-navigation/wireframing.html

Dr. Lilia SFAXI


Slide 15
www.liliasfaxi.wix.com /liliasfaxi
Étape 1: Planifier la Navigation entre Screens
Conduite d’un Projet D’A pp. Android

Dr. Lilia SFAXI


Slide 16
www.liliasfaxi.wix.com /liliasfaxi
Étape 2: Choisir les Patrons de Navigation
Conduite d’un Projet D’A pp. Android

Dr. Lilia SFAXI


Slide 17
www.liliasfaxi.wix.com /liliasfaxi
Étape 4: Définir les Screens (Wireframing)
Conduite d’un Projet D’A pp. Android

Dr. Lilia SFAXI


Slide 18
www.liliasfaxi.wix.com /liliasfaxi
Étape 5: Raffiner chaque Screen
Conduite d’un Projet D’A pp. Android

Attention: Il faut respecter les patrons de conception Android!

Dr. Lilia SFAXI


Slide 19
www.liliasfaxi.wix.com /liliasfaxi
Étape 6: Il Suffit de Coder…
Conduite d’un Projet D’A pp. Android

Dr. Lilia SFAXI


Slide 20
www.liliasfaxi.wix.com /liliasfaxi
Liens Utiles
Conduite d’un Projet D’A pp. Android

http://developer.android.com

http://www.android-app-patterns.com/

http://www.androidviews.net

Dr. Lilia SFAXI


Slide 21
www.liliasfaxi.wix.com /liliasfaxi
Développement Android

STRUCTURE D’UNE APPLICATION ANDROID

Dr. Lilia SFAXI


Slide 22
www.liliasfaxi.wix.com /liliasfaxi
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'u n 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.

Dr. Lilia SFAXI


Slide 23
www.liliasfaxi.wix.com /liliasfaxi
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 décrivantles
Ressources utilisées par l’application
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 : strings.xml pour les chaînes, décrivant sa nature , ses composants
arrays.xml pour les tableaux… et les permissions associées
Dr. Lilia SFAXI
Slide 24
www.liliasfaxi.wix.com /liliasfaxi
Résolutions, Densités, Différents Écrans
Structure d’une Application Android
•  Iconographie sous Android
•  http://developer.android.com/design/style/iconography.html

•  Android et les icônes, mdpi, hdpi, xhdpi, xxhdpi


•  http://labs.excilys.com/2013/07/18/android-et-les-icones-mdpi-
hdpi-xhdpi-xxhdpi/

•  Support de plusieurs écrans sous Android


•  http://developer.android.com/guide/practices/
screens_support.html

Dr. Lilia SFAXI


Slide 25
www.liliasfaxi.wix.com /liliasfaxi
Développement Android

CYCLE DE VIE D’UNE APPLICATION ANDROID

Dr. Lilia SFAXI


Slide 26
www.liliasfaxi.wix.com /liliasfaxi
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

Dr. Lilia SFAXI


Slide 27
www.liliasfaxi.wix.com /liliasfaxi
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

Dr. Lilia SFAXI


Slide 28
www.liliasfaxi.wix.com /liliasfaxi
Pile d’Activités
Cycle de Vie d’une Application Android

Dr. Lilia SFAXI


Slide 29
www.liliasfaxi.wix.com /liliasfaxi
É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’e st 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’e st plus visible
•  Peut être tuée par le système si besoin de mémoire

Dr. Lilia SFAXI


Slide 30
www.liliasfaxi.wix.com /liliasfaxi
É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()

Dr. Lilia SFAXI


Slide 31
www.liliasfaxi.wix.com /liliasfaxi
Évènements du Cycle de Vie d’une Activité
Cycle de Vie d’une Application Android

Dr. Lilia SFAXI


Slide 32
www.liliasfaxi.wix.com /liliasfaxi
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

Dr. Lilia SFAXI


Slide 33
www.liliasfaxi.wix.com /liliasfaxi
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

Dr. Lilia SFAXI


Slide 34
www.liliasfaxi.wix.com /liliasfaxi
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

Dr. Lilia SFAXI


Slide 35
www.liliasfaxi.wix.com /liliasfaxi
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
Dr. Lilia SFAXI
•  Dans cet état, l’activité peut être tuée par le système
www.liliasfaxi.wix.com /liliasfaxi
Slide 36
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
•  Dr.Dans
Lilia cet
SFAXIétat, l’activité peut être tuée par le système
Slide 37
www.liliasfaxi.wix.com /liliasfaxi
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

Dr. Lilia SFAXI


Slide 38
www.liliasfaxi.wix.com /liliasfaxi
Complément d’Information
Cycle de Vie d’une Application Android
•  Le site http://developer.android.com

•  Propose un exemple plus détaillé sur le LifeCycle avec plusieurs


activités. A tester chez vous.

•  Page LifeCycle :
•  http://developer.android.com/training/basics/activity-lifecycle/index.html

•  Lien vers le code source :


•  http://developer.android.com/shareables/training/ActivityLifecycle.zip

Dr. Lilia SFAXI


Slide 39
www.liliasfaxi.wix.com /liliasfaxi
Développement Android

ÉLÉMENTS DE BASE D’UNE APPLICATION ANDROID

Dr. Lilia SFAXI


Slide 40
www.liliasfaxi.wix.com /liliasfaxi
Activity (Rappel)
Éléments de Base d’une Application Android
•  Une Activity est un composant d'a pplication
•  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

Dr. Lilia SFAXI


Slide 41
www.liliasfaxi.wix.com /liliasfaxi
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 manifest.xml

•  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)

Dr. Lilia SFAXI


Slide 42
www.liliasfaxi.wix.com /liliasfaxi
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

Dr. Lilia SFAXI


Slide 43
www.liliasfaxi.wix.com /liliasfaxi
Intents
Éléments de Base d’une Application Android

•  Un Intent  : Un message asynchrone qui permet à un composant d'u ne


application de demander une fonctionnalité à partir d'u n 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

Dr. Lilia SFAXI


Slide 44
www.liliasfaxi.wix.com /liliasfaxi
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, NewActivity.class);
myIntent.putExtra("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")

Dr. Lilia SFAXI


Slide 45
www.liliasfaxi.wix.com /liliasfaxi
Fragments
Éléments de Base d’une Application Android

•  Un fragment représente le comportement d'u ne partie d'u ne


vue dans une Activity
•  Il possède son propre cycle de vie, mais est intiment lié à
l'a ctivité 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)

Dr. Lilia SFAXI


Slide 46
www.liliasfaxi.wix.com /liliasfaxi
Fragments
Éléments de Base d’une Application Android

Dr. Lilia SFAXI


Slide 47
www.liliasfaxi.wix.com /liliasfaxi
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

•  A voir ultérieurement…

Dr. Lilia SFAXI


Slide 48
www.liliasfaxi.wix.com /liliasfaxi

Vous aimerez peut-être aussi