SlideShare une entreprise Scribd logo
1  sur  68
Télécharger pour lire hors ligne
Chp5 : Développement Android
Cycle de Vie, Composants Principaux, Comportement…
Conception et Développement d’Applications Mobiles
GL4 (Option Mobile) - 2016
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 1
PLAN
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
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 2
Chp4 : Développement Android
ENVIRONNEMENT DE DÉVELOPPEMENT ANDROID
Chp4 : Développement Android
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 3
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
Android pour le Développement Mobile
• 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
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 4
Environnement de Développement Android
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
www.liliasfaxi.wix.com/liliasfaxi
Slide 5
Environnement de Développement Android
Android est:
• 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
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 6
Environnement de Développement Android
Distribution des Versions (Avril 2015)
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 7
Environnement de Développement Android
https://developer.android.com/about/dashboards/index.html
ARCHITECTURE ANDROID
Chp4 : Développement Android
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 8
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
Android SW Stack
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 9
Architecture Android
SW Stack (1): Linux Kernel
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 10
Architecture Android
Linuxkernel (version 3.4 pourLollipop 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.
SW Stack (2): Android Runtime
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 11
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ésentela base du framework applicatif .
SW Stack (3): Libraries
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 12
Architecture Android
Android Libraries
• Linux kernel Libraries : diverses
librairies fondamentales de C/C++ :
• Media Framework: lectureaudio /
vidéo
• Surfacemanager : 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 lesupport SSL
SW Stack (4): Applications Framework
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 13
Architecture Android
Applications Framework
• Fournit les classes qui seront utilisées pour la créationd’applications Android.
• Représente une abstraction pour les accès HW et prend en charge la gestion de
l’interface utilisateur etdes ressources de l’application.
SW Stack (5): Applications
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 14
Architecture Android
Applications
• Toutes les applications, native ou tierces, sont basées sur la même API.
• La couche application s’ exécutesur un runtime Android en utilisant les classes
et services de fournis par la couche « Applications Framework ».
CONDUITE D’UN PROJET D’APP. ANDROID
Chp4 : Développement Android
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 15
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
Point de Départ: IHM & UX
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 16
Conduite d’un Projet D’App. Android
Voir http://developer.android.com/training/design-navigation/wireframing.html
Étape 1: Planifier la Navigation entre Screens
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 17
Conduite d’un Projet D’App. Android
Étape 2: Choisir les Patrons de Navigation
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 18
Conduite d’un Projet D’App. Android
Étape 4: Définir les Screens (Wireframing)
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 19
Conduite d’un Projet D’App. Android
Étape 5: Raffiner chaque Screen
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 20
Conduite d’un Projet D’App. Android
Attention:Ilfaut respecterles patrons de conceptionAndroid!
Étape 6: Il Suffit de Coder…
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 21
Conduite d’un Projet D’App. Android
Liens Utiles
http://developer.android.com
http://www.android-app-patterns.com/
http://www.androidviews.net
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 22
Conduite d’un Projet D’App. Android
STRUCTURE D’UNE APPLICATION ANDROID
Chp4 : Développement Android
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 23
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
Environnement de Développement
• 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.
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 24
Structure d’une Application Android
Arborescence d’un Projet
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 25
Structure d’une Application Android
Bibliothèques du module principal
Tests de votre application
Code source Java des applications
Ressources utilisées par l’application
Images (PNG,JPEG ou GIF) et
fichiers XML décrivantles
formes
Fichiers XML représentant l’interface
d’une page ou d’une partie de page de
votre application
Fichiers XML décrivant les menus
Icônes de lancement de l’application
(classés parrésolution d’écran)
Dossier contenantles fichiers décrivant des
valeurs utilisées dans l’application.
Ex : strings.xml pourles chaînes,
arrays.xml pour les tableaux…
Fichier de contrôle de l’application,
décrivant sa nature ,ses composants
et les permissions associées
Résolutions, Densités, Différents Écrans
• 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.h
tml
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 26
Structure d’une Application Android
CYCLE DE VIE D’UNE APPLICATION ANDROID
Chp4 : Développement Android
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 27
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
Cycle de Vie
• 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
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 28
Cycle de Vie d’une Application Android
Vied’une Application:
Actif/Inactif
Visible/ Invisible
Début Fin
Pile d’Activités
• 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
www.liliasfaxi.wix.com/liliasfaxi
Slide 29
Cycle de Vie d’une Application Android
Pile d’Activités
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 30
Cycle de Vie d’une Application Android
États d’une Activité
• 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
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 31
Cycle de Vie d’une Application Android
Évènements du Cycle de Vie d’une Activité
• 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
www.liliasfaxi.wix.com/liliasfaxi
Slide 32
Cycle de Vie d’une Application Android
Évènements du Cycle de Vie d’une Activité
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 33
Cycle de Vie d’une Application Android
Méthodes de Transition (1/6): onCreate
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 34
Cycle de Vie d’une Application Android
onCreate
• Appelée à la créationd’une activité
• Initialisation de tous les éléments
• Un bundle est passé à cetteméthode, contenant l’état précédent de l’activité
• Toujours suivie de onStart
Méthodes de Transition (2/6): onStart / onRestart
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 35
Cycle de Vie d’une Application Android
onStart
• Appelée justeavant quel’activité ne devienne visible,
• Suiviede
• onResume sil’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
Méthodes de Transition (3/6): onResume
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 36
Cycle de Vie d’une Application Android
onResume
• Appelée justeavant quel’activité ne commence interagir avecl’utilisateur
• A ce point, l’activité est en haut de la pile
• Toujours suivie de onPause
Méthodes de Transition (4/6): onPause
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 37
Cycle de Vie d’une Application Android
onPause
• Appelée quand lesystème va démarrer une autre activité
• Utiliséetypiquement pour
• Consignerles données non sauvegardées
• Arrêtées les animations ou tout ce quiconsomme de la mémoire...
• Ne doit pas consommer beaucoup de temps, car l’activité suivante ne va démarrer
quesi cetteméthode retourne
• Suiviede :
• onResume sil’activité est rechargée en premier plan
• onStop si l’activité devient invisible
• Dans cet état, l’activité peut êtretuée par lesystème
Méthodes de Transition (5/6): onStop
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 38
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
• Suiviepar:
• onRestart si l’activité recommence à interagir avecl’utilisateur
• onDestroy sil’activité va disparaître
• Dans cet état, l’activité peut êtretuée par lesystème
Méthodes de Transition (6/6): onDestroy
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 39
Cycle de Vie d’une Application Android
onDestroy
• Appelée quand l’activité est détruite
• Dernier appel quel’activité va recevoir
• Peut intervenir si:
• L’ activité se termine (appel de finish)
• Le système détruit temporairement cetteinstance de l’activité pour gagnerde l’espace
• On peut distinguer entre ces deux scénarios avec la méthode isFinishing()
• Dans cet état, l’activité peut êtretuée par lesystème
Complément d’Information
• 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
www.liliasfaxi.wix.com/liliasfaxi
Slide 40
Cycle de Vie d’une Application Android
ÉLÉMENTS DE BASE D’UNE APPLICATION ANDROID
Chp4 : Développement Android
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 41
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
Activity (Rappel)
• 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
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 42
Éléments de Base d’une Application Android
Activity (Rappel)
• 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
www.liliasfaxi.wix.com/liliasfaxi
Slide 43
Éléments de Base d’une Application Android
Disposition des Éléments Graphiques
• 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
www.liliasfaxi.wix.com/liliasfaxi
Slide 44
Éléments de Base d’une Application Android
Disposition des Éléments Graphiques
• Les ViewGroups permettent d’organiser les Views
• FrameLayout
• LinearLayout (Vertical / Horizontal)
• TableLayout
• AbsoluteLayout
• RelativeLayout
• Webview
• Ils peuvent aussi être hiérarchiques
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 45
Éléments de Base d’une Application Android
Intents
• 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
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 46
Éléments de Base d’une Application Android
Enchaînement des Activités via les Intents
• 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
www.liliasfaxi.wix.com/liliasfaxi
Slide 47
Éléments de Base d’une Application Android
Fragments
• 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)
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 48
Éléments de Base d’une Application Android
Fragments
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 49
Éléments de Base d’une Application Android
Fragments: Cycle de Vie
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 50
Éléments de Base d’une Application Android
Etatde l’Activité
Created
Started
Resumed
Fragments: Cycle de Vie
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 51
É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.
Fragments: Cycle de Vie
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 52
Éléments de Base d’une Application Android
Etatde l’Activité
Paused
Stopped
Destroyed
Fragments: Cycle de Vie
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 53
Éléments de Base d’une Application Android
Invoquée quand la hiérarchie de View
associée avecle fragment est enlevée.
Invoquée quand le fragment est dissocié
de l’ Activity
Autres Composants 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
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 54
Éléments de Base d’une Application Android
Broadcast Intent
• Intent envoyé à toutes les applications qui ont souscrit au
Broadcast Receiver
• Envoyés par le système Android, par exemple, pour indiquer
les changements de l’appareil
• Démarrage terminé, connexion à un appareil externe ou écran
allumé/éteint
• Peut être:
• Normal (ou asynchrone): envoyé à tous les Broadcast Receivers
en même temps
• Ordonné: envoyé à un receiver, qui peut, soit le tuer, soit le
passer à un autre Broadcast Receiver
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 55
Éléments de Base d’une Application Android
Broadcast Receiver
• Mécanisme avec lequel les applications peuvent répondre aux
Broadcast Intents
• Doit être souscrit par une application, et configuré dans un Intent
Filter, pour indiquer le type de broadcast auquel elle est intéressée.
• Quand un intent correspondant est diffusé
• Le Broadcast Receiver est invoqué par l’environnement d’exécution Android,
même si l’application intéressée n’est pas démarrée
• Le Broadcast Receiver a 5 secondes pour compléter les tâches qu’il a à faire
• Lancement d’un service, mise à jour de données ou notification à un utilisateur
• S’exécute en arrière plan et n’a pas d’interface utilisateur
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 56
Éléments de Base d’une Application Android
Voir Exemple :
BroadcastReceiverTest
Content Provider
• Implémente un mécanisme pour le partage de données entre
applications
• Toute application peut fournir les autres applications avec un accès à
ses données sous-jacentes via l’implémentation d’un Content Provider
permettant d’ajouter, supprimer et lancer des requêtes sur les
données
• Définit des URI pour l’accès aux données
• Données peuvent être partagées sous forme de fichier ou de base de
données SQLite
• Existence de Content Providers standards dans le runtime Android
pour accès aux données: Contacts ou Fichiers Média
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 57
Éléments de Base d’une Application Android
Voir Exemple :
ContentProviderTest
Service
• Processus qui tourne en arrière plan et n’a pas d’interface
• Peut être démarré et géré à partir d’activités, de Broadcast Receivers
ou autres services
• Idéal pour des situations où une application a besoin de continuer à
réaliser des tâches sans avoir besoin d’une interface visible pour
l’utilisateur
• Peut notifier les utilisateurs d’évènements grâce aux notifications et
toasts
• Peut lancer des Intents
• Services ont une plus forte priorité que les autres processus et sont
terminés en dernier par le système, s’il a besoin de ressources
• Le service sera redémarré automatiquement dès que les ressources
nécessaires sont disponibles à nouveau
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 58
Éléments de Base d’une Application Android
SERVICES ANDROID
Chp4 : Développement Android
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 59
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
Types de Services
• Deux utilisations de services
• Local vs global
• Started vs Bound
• Cycle de vie spécifique aux services (quelque soit leur type)
• Services « Locaux »
• Service personnel, inaccessible pour les autres applications
• Service, Intent, IntentService
• En accès restreint
• Peu utilisés en pratique
• Services « Distants »
• Accessible aux autres applications
• Langage commun AIDL pour définir les interfaces
• Recherche du service, IBinder, Connection
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 60
Services Android
Cycle de Vie d’un Service
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 61
Services Android
StartedService Bound Service
Services « Started »
• Démarré par un autre composant de l’application (ex
Activity) suite à l’appel de startService() et
implémente onStartCommand()
• Une fois démarré, il peut s’exécuterindéfiniment en
arrière plan
• Même si le composant qui l’a démarré est détruit
• En général : Réalise une seule opération et ne retourne
pas de résultat au processus qui l’a déclenché
• Le service doit se terminer explicitement:
• Soit lui-même : appel à stopSelf()
• Soit par une application cliente : appel à stopService()
• Exemple : service de téléchargement / upload de
fichiers
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 62
Services Android
Voir Exemple :
ServiceExample
Services « Bound »
• Un composant de l’application se connecte à ce service en
appelant bindService()
• Un service Bound offre une interface qui permet à ses
clients d’interagir avec lui
• Envoyer des requêtes / Recevoir des réponses
• Même s’il est sur un autre processus à via IPC
• S ’exécute uniquement quand un autre composant de
l’application est connecté à lui
• Plusieurs composants peuvent se connecter au service en
même temps
• Le service est détruit quand tous les composants se
déconnectent
• Destruction automatique par le système Android
• Exemple:
• Lecture d’un fichier MP3, et commande d’arrêt/pause/replay…
via l’interface
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 63
Services Android
Voir Exemple :
RemoteBoundService
Services « Mixtes »
• Un service peut être à la fois Started et Bound
• Started
• S’exécute indéfiniment
• Implémente la méthode onStartCommand()
• Bound
• Est relié à un composant (activité ou autre)
• Implémente la méthode onBind()
• Dans tous les cas (Started, Bound ou Mixte)
• Par défaut, tout composant, même à partir d’une autre application, peut
lancer un service grâce aux Intents
• Il est possible de déclarer un service comme étant Privé à l’application
• Dans le Manifest
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 64
Services Android
Intent Service
• Classe utilitaire
• Sous-classe de Service
• Lance un « worker thread » pour gérer les tâches en arrière plan de
manière asynchrone
• Les requêtes sont stockées dans des queues (files d’attente) et
traitées séquentiellement (dans leur ordre d’arrivée)
• Une opération lancée dans un IntentService ne peut pas être
interrompue
• Quand toutes les requêtes sont exécutées, le thread termine
• On doit implémenter la méthode onHandleIntent
• Code à exécuter pour chaque requête
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 65
Services Android
Voir Exemple :
ServiceExample
Services et Threads
• Par défaut, un service s’exécute dans le thread principal du processus
qui le contient
• Si le service réalise des opérations de calcul intensif ou des opérations
bloquantes (lecture mp3, communication réseau) le développeur doit
(explicitement) créer un nouveau thread pour le service pour réaliser
ces tâches
• Sauf dans le cas d’un IntentService, qui tourne par défaut sur son propre
worker thread
• Objectifs :
• Garder le thread principal réactif vis à vis des interactions avec l’utilisateur
• Réduire le risque du problème : Application Not Responding (ANR)
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 66
Services Android
Services ou Threads ?
• Un service est simplement un composant qui peut fonctionner en arrière-
plan même si l'utilisateur n'interagit pas avec votre application.
• On doit créer un service uniquement pour cet objectif
• Si le besoin est d'effectuer un travail en dehors du thread principal, mais
seulement pendant que l'utilisateur interagit avec l’application à Il est
recommandé de créer un nouveau thread et non pas un service
• Exemple ( jouer de la musique uniquement quand votre activité s’exécute):
• Créer un thread dans onCreate ()
• Commencer à l’exécuter dans onStart ()
• Puis l'arrêter dans onStop ().
• Rappel : un service fonctionne par défaut dans le thread principal de
l'application
• Il faut toujours créer un nouveau thread dans le service s’il effectue des
opérations intensives ou bloquantes.
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 67
Services Android
Références
• Dr. M. W. Youssef, « Développement Mobile (Android) », Institut
Supérieur d’Informatique, 2014
• Site officiel du développeur Android: developer.android.com, consulté
le 04/2015
• Technotopia: http://www.techotopia.com/index.php consulté le
04/2015
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 68
Sites Web & Cours

Contenu connexe

Tendances

Chp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesChp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesLilia Sfaxi
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceLilia Sfaxi
 
Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menusLilia Sfaxi
 
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0Ayoub Rouzi
 
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...Nawres Farhat
 
Applications Android - cours 11 : Boites de dialogue
Applications Android - cours 11 : Boites de dialogueApplications Android - cours 11 : Boites de dialogue
Applications Android - cours 11 : Boites de dialogueAhmed-Chawki Chaouche
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à androidLilia Sfaxi
 
rapport de projet de fin d'étude_PFE
rapport de projet de fin d'étude_PFErapport de projet de fin d'étude_PFE
rapport de projet de fin d'étude_PFEDonia Hammami
 
réaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de testréaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de testahmed oumezzine
 
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...MOHAMMED MOURADI
 
Conception et Réalisation d'un Data Warehouse
Conception et Réalisation d'un Data WarehouseConception et Réalisation d'un Data Warehouse
Conception et Réalisation d'un Data WarehouseAbderrahmane Filali
 
rapport PFE ingénieur génie logiciel INSAT
rapport PFE ingénieur génie logiciel INSATrapport PFE ingénieur génie logiciel INSAT
rapport PFE ingénieur génie logiciel INSATSiwar GUEMRI
 
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...
Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...Hajer Dahech
 
Rapport de projet de fin d"études
Rapport de projet de fin d"étudesRapport de projet de fin d"études
Rapport de projet de fin d"étudesMohamed Boubaya
 
Ma présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site WebMa présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site WebHarrathi Mohamed
 
Conception et developpement d'un site web pour la suggestion et notification ...
Conception et developpement d'un site web pour la suggestion et notification ...Conception et developpement d'un site web pour la suggestion et notification ...
Conception et developpement d'un site web pour la suggestion et notification ...Mohamed Boubaya
 
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...Symphorien Niyonzima
 

Tendances (20)

Chp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesChp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications Mobiles
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-Reduce
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menus
 
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
 
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
 
Applications Android - cours 11 : Boites de dialogue
Applications Android - cours 11 : Boites de dialogueApplications Android - cours 11 : Boites de dialogue
Applications Android - cours 11 : Boites de dialogue
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à android
 
rapport de projet de fin d'étude_PFE
rapport de projet de fin d'étude_PFErapport de projet de fin d'étude_PFE
rapport de projet de fin d'étude_PFE
 
réaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de testréaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de test
 
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
 
Conception et Réalisation d'un Data Warehouse
Conception et Réalisation d'un Data WarehouseConception et Réalisation d'un Data Warehouse
Conception et Réalisation d'un Data Warehouse
 
rapport PFE ingénieur génie logiciel INSAT
rapport PFE ingénieur génie logiciel INSATrapport PFE ingénieur génie logiciel INSAT
rapport PFE ingénieur génie logiciel INSAT
 
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...
Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...
 
Rapport de projet de fin d"études
Rapport de projet de fin d"étudesRapport de projet de fin d"études
Rapport de projet de fin d"études
 
Ma présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site WebMa présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site Web
 
Présentation PFE
Présentation PFEPrésentation PFE
Présentation PFE
 
Conception et developpement d'un site web pour la suggestion et notification ...
Conception et developpement d'un site web pour la suggestion et notification ...Conception et developpement d'un site web pour la suggestion et notification ...
Conception et developpement d'un site web pour la suggestion et notification ...
 
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
 

En vedette

Server-side JS with NodeJS
Server-side JS with NodeJSServer-side JS with NodeJS
Server-side JS with NodeJSLilia Sfaxi
 
eServices-Chp6: WOA
eServices-Chp6: WOAeServices-Chp6: WOA
eServices-Chp6: WOALilia Sfaxi
 
Client-side JavaScript
Client-side JavaScriptClient-side JavaScript
Client-side JavaScriptLilia Sfaxi
 
eServices-Chp3: Composition de Services
eServices-Chp3: Composition de ServiceseServices-Chp3: Composition de Services
eServices-Chp3: Composition de ServicesLilia Sfaxi
 
Chp6 - Développement iOS
Chp6 - Développement iOSChp6 - Développement iOS
Chp6 - Développement iOSLilia Sfaxi
 
Systèmes d'Exploitation - chp4-gestion disque
Systèmes d'Exploitation - chp4-gestion disqueSystèmes d'Exploitation - chp4-gestion disque
Systèmes d'Exploitation - chp4-gestion disqueLilia Sfaxi
 
eServices-Chp4: ESB
eServices-Chp4: ESBeServices-Chp4: ESB
eServices-Chp4: ESBLilia Sfaxi
 
Chp6 - De UML vers C++
Chp6 - De UML vers C++Chp6 - De UML vers C++
Chp6 - De UML vers C++Lilia Sfaxi
 
Présentation de Thèse
Présentation de ThèsePrésentation de Thèse
Présentation de ThèseLilia Sfaxi
 
Chp3 - Les Services Web
Chp3 - Les Services WebChp3 - Les Services Web
Chp3 - Les Services WebLilia Sfaxi
 
Mobile developement
Mobile developementMobile developement
Mobile developementLilia Sfaxi
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherLilia Sfaxi
 
P2 éléments graphiques android
P2 éléments graphiques androidP2 éléments graphiques android
P2 éléments graphiques androidLilia Sfaxi
 
Software Engineering - chp0- introduction
Software Engineering - chp0- introductionSoftware Engineering - chp0- introduction
Software Engineering - chp0- introductionLilia Sfaxi
 
Software Engineering - chp1- software dev methodologies
Software Engineering - chp1- software dev methodologiesSoftware Engineering - chp1- software dev methodologies
Software Engineering - chp1- software dev methodologiesLilia Sfaxi
 

En vedette (20)

Server-side JS with NodeJS
Server-side JS with NodeJSServer-side JS with NodeJS
Server-side JS with NodeJS
 
eServices-Chp6: WOA
eServices-Chp6: WOAeServices-Chp6: WOA
eServices-Chp6: WOA
 
Client-side JavaScript
Client-side JavaScriptClient-side JavaScript
Client-side JavaScript
 
eServices-Chp3: Composition de Services
eServices-Chp3: Composition de ServiceseServices-Chp3: Composition de Services
eServices-Chp3: Composition de Services
 
Chp6 - Développement iOS
Chp6 - Développement iOSChp6 - Développement iOS
Chp6 - Développement iOS
 
Systèmes d'Exploitation - chp4-gestion disque
Systèmes d'Exploitation - chp4-gestion disqueSystèmes d'Exploitation - chp4-gestion disque
Systèmes d'Exploitation - chp4-gestion disque
 
Testing Angular
Testing AngularTesting Angular
Testing Angular
 
eServices-Chp4: ESB
eServices-Chp4: ESBeServices-Chp4: ESB
eServices-Chp4: ESB
 
Chp6 - De UML vers C++
Chp6 - De UML vers C++Chp6 - De UML vers C++
Chp6 - De UML vers C++
 
Angular
AngularAngular
Angular
 
Présentation de Thèse
Présentation de ThèsePrésentation de Thèse
Présentation de Thèse
 
Thinking BIG
Thinking BIGThinking BIG
Thinking BIG
 
Chp3 - Les Services Web
Chp3 - Les Services WebChp3 - Les Services Web
Chp3 - Les Services Web
 
Mobile developement
Mobile developementMobile developement
Mobile developement
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together
 
P2 éléments graphiques android
P2 éléments graphiques androidP2 éléments graphiques android
P2 éléments graphiques android
 
P5 stockage
P5 stockageP5 stockage
P5 stockage
 
Software Engineering - chp0- introduction
Software Engineering - chp0- introductionSoftware Engineering - chp0- introduction
Software Engineering - chp0- introduction
 
Software Engineering - chp1- software dev methodologies
Software Engineering - chp1- software dev methodologiesSoftware Engineering - chp1- software dev methodologies
Software Engineering - chp1- software dev methodologies
 
Core JavaScript
Core JavaScriptCore JavaScript
Core JavaScript
 

Similaire à Chp5 - Applications Android

cours-android.pdf
cours-android.pdfcours-android.pdf
cours-android.pdfmed_univ78
 
Tech conf1 développement_natif_applications_mobiles
Tech conf1 développement_natif_applications_mobilesTech conf1 développement_natif_applications_mobiles
Tech conf1 développement_natif_applications_mobilesTelecomValley
 
Cours android
Cours androidCours android
Cours androidAd Hafsa
 
Android Studio, premier contact
Android Studio, premier contactAndroid Studio, premier contact
Android Studio, premier contactJasmine Conseil
 
Android Studio, premier contact
Android Studio, premier contactAndroid Studio, premier contact
Android Studio, premier contactJasmine Conseil
 
Projet de fin d étude (1)
Projet de fin d étude (1)Projet de fin d étude (1)
Projet de fin d étude (1)Sanaa Guissar
 
01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)TECOS
 
Android workshop - Bootcamp du Mauriapp Challenge 2016
Android workshop - Bootcamp du Mauriapp Challenge 2016Android workshop - Bootcamp du Mauriapp Challenge 2016
Android workshop - Bootcamp du Mauriapp Challenge 2016Hadina RIMTIC
 
Tech Conf n°1 - Développement natif d'applications mobiles
Tech Conf n°1 - Développement natif d'applications mobilesTech Conf n°1 - Développement natif d'applications mobiles
Tech Conf n°1 - Développement natif d'applications mobilesMichael Laguerre
 
introAndroid_2023_V6.5.2pp1-162.pdf
introAndroid_2023_V6.5.2pp1-162.pdfintroAndroid_2023_V6.5.2pp1-162.pdf
introAndroid_2023_V6.5.2pp1-162.pdfRihabBENLAMINE
 
Ch1. Développement mobile
Ch1. Développement mobileCh1. Développement mobile
Ch1. Développement mobileHaifa Chorfi
 
Cours android 2016
Cours android 2016Cours android 2016
Cours android 2016Saber LAJILI
 
Cours android 2016_partie1
Cours android 2016_partie1Cours android 2016_partie1
Cours android 2016_partie1Sabeur LAJILI
 

Similaire à Chp5 - Applications Android (20)

cours-android.pdf
cours-android.pdfcours-android.pdf
cours-android.pdf
 
Cours android
Cours androidCours android
Cours android
 
Cours Android
Cours AndroidCours Android
Cours Android
 
Tech conf1 développement_natif_applications_mobiles
Tech conf1 développement_natif_applications_mobilesTech conf1 développement_natif_applications_mobiles
Tech conf1 développement_natif_applications_mobiles
 
Cours android
Cours androidCours android
Cours android
 
Android Studio, premier contact
Android Studio, premier contactAndroid Studio, premier contact
Android Studio, premier contact
 
Android Studio, premier contact
Android Studio, premier contactAndroid Studio, premier contact
Android Studio, premier contact
 
Projet de fin d étude (1)
Projet de fin d étude (1)Projet de fin d étude (1)
Projet de fin d étude (1)
 
Apple - WWDC 2018
Apple - WWDC 2018Apple - WWDC 2018
Apple - WWDC 2018
 
01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)
 
Offre technique
Offre techniqueOffre technique
Offre technique
 
Android workshop - Bootcamp du Mauriapp Challenge 2016
Android workshop - Bootcamp du Mauriapp Challenge 2016Android workshop - Bootcamp du Mauriapp Challenge 2016
Android workshop - Bootcamp du Mauriapp Challenge 2016
 
Tech Conf n°1 - Développement natif d'applications mobiles
Tech Conf n°1 - Développement natif d'applications mobilesTech Conf n°1 - Développement natif d'applications mobiles
Tech Conf n°1 - Développement natif d'applications mobiles
 
introAndroid_2023_V6.5.2pp1-162.pdf
introAndroid_2023_V6.5.2pp1-162.pdfintroAndroid_2023_V6.5.2pp1-162.pdf
introAndroid_2023_V6.5.2pp1-162.pdf
 
Android introvf
Android introvfAndroid introvf
Android introvf
 
Ch1. Développement mobile
Ch1. Développement mobileCh1. Développement mobile
Ch1. Développement mobile
 
Chapitre 4 sem
Chapitre 4 semChapitre 4 sem
Chapitre 4 sem
 
Cours android 2016
Cours android 2016Cours android 2016
Cours android 2016
 
Cours android 2016_partie1
Cours android 2016_partie1Cours android 2016_partie1
Cours android 2016_partie1
 
android.pdf
android.pdfandroid.pdf
android.pdf
 

Plus de Lilia Sfaxi

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfLilia Sfaxi
 
Plan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfPlan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfLilia Sfaxi
 
Lab1-DB-Cassandra
Lab1-DB-CassandraLab1-DB-Cassandra
Lab1-DB-CassandraLilia Sfaxi
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-CorrectionLilia Sfaxi
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-CorrectionLilia Sfaxi
 
TP0-UML-Correction
TP0-UML-CorrectionTP0-UML-Correction
TP0-UML-CorrectionLilia Sfaxi
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-CorrectionLilia Sfaxi
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-SéquencesLilia Sfaxi
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-CorrectionLilia Sfaxi
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - CorrectionLilia Sfaxi
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correctionLilia Sfaxi
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrageLilia Sfaxi
 
Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Lilia Sfaxi
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intentsLilia Sfaxi
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web servicesLilia Sfaxi
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésLilia Sfaxi
 

Plus de Lilia Sfaxi (20)

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdf
 
Plan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfPlan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdf
 
Lab3-DB_Neo4j
Lab3-DB_Neo4jLab3-DB_Neo4j
Lab3-DB_Neo4j
 
Lab2-DB-Mongodb
Lab2-DB-MongodbLab2-DB-Mongodb
Lab2-DB-Mongodb
 
Lab1-DB-Cassandra
Lab1-DB-CassandraLab1-DB-Cassandra
Lab1-DB-Cassandra
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-Correction
 
TP0-UML-Correction
TP0-UML-CorrectionTP0-UML-Correction
TP0-UML-Correction
 
TD4-UML
TD4-UMLTD4-UML
TD4-UML
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-Séquences
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-Correction
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
TD1 - UML - DCU
TD1 - UML - DCUTD1 - UML - DCU
TD1 - UML - DCU
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correction
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrage
 
Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intents
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web services
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancés
 

Chp5 - Applications Android

  • 1. Chp5 : Développement Android Cycle de Vie, Composants Principaux, Comportement… Conception et Développement d’Applications Mobiles GL4 (Option Mobile) - 2016 Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 1
  • 2. PLAN 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 Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 2 Chp4 : Développement Android
  • 3. ENVIRONNEMENT DE DÉVELOPPEMENT ANDROID Chp4 : Développement Android Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 3 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
  • 4. Android pour le Développement Mobile • 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 Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 4 Environnement de Développement Android
  • 5. 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 www.liliasfaxi.wix.com/liliasfaxi Slide 5 Environnement de Développement Android
  • 6. Android est: • 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 Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 6 Environnement de Développement Android
  • 7. Distribution des Versions (Avril 2015) Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 7 Environnement de Développement Android https://developer.android.com/about/dashboards/index.html
  • 8. ARCHITECTURE ANDROID Chp4 : Développement Android Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 8 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
  • 9. Android SW Stack Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 9 Architecture Android
  • 10. SW Stack (1): Linux Kernel Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 10 Architecture Android Linuxkernel (version 3.4 pourLollipop 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.
  • 11. SW Stack (2): Android Runtime Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 11 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ésentela base du framework applicatif .
  • 12. SW Stack (3): Libraries Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 12 Architecture Android Android Libraries • Linux kernel Libraries : diverses librairies fondamentales de C/C++ : • Media Framework: lectureaudio / vidéo • Surfacemanager : 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 lesupport SSL
  • 13. SW Stack (4): Applications Framework Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 13 Architecture Android Applications Framework • Fournit les classes qui seront utilisées pour la créationd’applications Android. • Représente une abstraction pour les accès HW et prend en charge la gestion de l’interface utilisateur etdes ressources de l’application.
  • 14. SW Stack (5): Applications Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 14 Architecture Android Applications • Toutes les applications, native ou tierces, sont basées sur la même API. • La couche application s’ exécutesur un runtime Android en utilisant les classes et services de fournis par la couche « Applications Framework ».
  • 15. CONDUITE D’UN PROJET D’APP. ANDROID Chp4 : Développement Android Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 15 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
  • 16. Point de Départ: IHM & UX Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 16 Conduite d’un Projet D’App. Android Voir http://developer.android.com/training/design-navigation/wireframing.html
  • 17. Étape 1: Planifier la Navigation entre Screens Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 17 Conduite d’un Projet D’App. Android
  • 18. Étape 2: Choisir les Patrons de Navigation Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 18 Conduite d’un Projet D’App. Android
  • 19. Étape 4: Définir les Screens (Wireframing) Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 19 Conduite d’un Projet D’App. Android
  • 20. Étape 5: Raffiner chaque Screen Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 20 Conduite d’un Projet D’App. Android Attention:Ilfaut respecterles patrons de conceptionAndroid!
  • 21. Étape 6: Il Suffit de Coder… Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 21 Conduite d’un Projet D’App. Android
  • 22. Liens Utiles http://developer.android.com http://www.android-app-patterns.com/ http://www.androidviews.net Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 22 Conduite d’un Projet D’App. Android
  • 23. STRUCTURE D’UNE APPLICATION ANDROID Chp4 : Développement Android Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 23 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
  • 24. Environnement de Développement • 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. Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 24 Structure d’une Application Android
  • 25. Arborescence d’un Projet Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 25 Structure d’une Application Android Bibliothèques du module principal Tests de votre application Code source Java des applications Ressources utilisées par l’application Images (PNG,JPEG ou GIF) et fichiers XML décrivantles formes Fichiers XML représentant l’interface d’une page ou d’une partie de page de votre application Fichiers XML décrivant les menus Icônes de lancement de l’application (classés parrésolution d’écran) Dossier contenantles fichiers décrivant des valeurs utilisées dans l’application. Ex : strings.xml pourles chaînes, arrays.xml pour les tableaux… Fichier de contrôle de l’application, décrivant sa nature ,ses composants et les permissions associées
  • 26. Résolutions, Densités, Différents Écrans • 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.h tml Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 26 Structure d’une Application Android
  • 27. CYCLE DE VIE D’UNE APPLICATION ANDROID Chp4 : Développement Android Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 27 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
  • 28. Cycle de Vie • 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 Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 28 Cycle de Vie d’une Application Android Vied’une Application: Actif/Inactif Visible/ Invisible Début Fin
  • 29. Pile d’Activités • 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 www.liliasfaxi.wix.com/liliasfaxi Slide 29 Cycle de Vie d’une Application Android
  • 30. Pile d’Activités Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 30 Cycle de Vie d’une Application Android
  • 31. États d’une Activité • 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 Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 31 Cycle de Vie d’une Application Android
  • 32. Évènements du Cycle de Vie d’une Activité • 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 www.liliasfaxi.wix.com/liliasfaxi Slide 32 Cycle de Vie d’une Application Android
  • 33. Évènements du Cycle de Vie d’une Activité Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 33 Cycle de Vie d’une Application Android
  • 34. Méthodes de Transition (1/6): onCreate Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 34 Cycle de Vie d’une Application Android onCreate • Appelée à la créationd’une activité • Initialisation de tous les éléments • Un bundle est passé à cetteméthode, contenant l’état précédent de l’activité • Toujours suivie de onStart
  • 35. Méthodes de Transition (2/6): onStart / onRestart Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 35 Cycle de Vie d’une Application Android onStart • Appelée justeavant quel’activité ne devienne visible, • Suiviede • onResume sil’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
  • 36. Méthodes de Transition (3/6): onResume Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 36 Cycle de Vie d’une Application Android onResume • Appelée justeavant quel’activité ne commence interagir avecl’utilisateur • A ce point, l’activité est en haut de la pile • Toujours suivie de onPause
  • 37. Méthodes de Transition (4/6): onPause Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 37 Cycle de Vie d’une Application Android onPause • Appelée quand lesystème va démarrer une autre activité • Utiliséetypiquement pour • Consignerles données non sauvegardées • Arrêtées les animations ou tout ce quiconsomme de la mémoire... • Ne doit pas consommer beaucoup de temps, car l’activité suivante ne va démarrer quesi cetteméthode retourne • Suiviede : • onResume sil’activité est rechargée en premier plan • onStop si l’activité devient invisible • Dans cet état, l’activité peut êtretuée par lesystème
  • 38. Méthodes de Transition (5/6): onStop Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 38 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 • Suiviepar: • onRestart si l’activité recommence à interagir avecl’utilisateur • onDestroy sil’activité va disparaître • Dans cet état, l’activité peut êtretuée par lesystème
  • 39. Méthodes de Transition (6/6): onDestroy Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 39 Cycle de Vie d’une Application Android onDestroy • Appelée quand l’activité est détruite • Dernier appel quel’activité va recevoir • Peut intervenir si: • L’ activité se termine (appel de finish) • Le système détruit temporairement cetteinstance de l’activité pour gagnerde l’espace • On peut distinguer entre ces deux scénarios avec la méthode isFinishing() • Dans cet état, l’activité peut êtretuée par lesystème
  • 40. Complément d’Information • 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 www.liliasfaxi.wix.com/liliasfaxi Slide 40 Cycle de Vie d’une Application Android
  • 41. ÉLÉMENTS DE BASE D’UNE APPLICATION ANDROID Chp4 : Développement Android Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 41 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
  • 42. Activity (Rappel) • 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 Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 42 Éléments de Base d’une Application Android
  • 43. Activity (Rappel) • 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 www.liliasfaxi.wix.com/liliasfaxi Slide 43 Éléments de Base d’une Application Android
  • 44. Disposition des Éléments Graphiques • 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 www.liliasfaxi.wix.com/liliasfaxi Slide 44 Éléments de Base d’une Application Android
  • 45. Disposition des Éléments Graphiques • Les ViewGroups permettent d’organiser les Views • FrameLayout • LinearLayout (Vertical / Horizontal) • TableLayout • AbsoluteLayout • RelativeLayout • Webview • Ils peuvent aussi être hiérarchiques Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 45 Éléments de Base d’une Application Android
  • 46. Intents • 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 Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 46 Éléments de Base d’une Application Android
  • 47. Enchaînement des Activités via les Intents • 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 www.liliasfaxi.wix.com/liliasfaxi Slide 47 Éléments de Base d’une Application Android
  • 48. Fragments • 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) Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 48 Éléments de Base d’une Application Android
  • 49. Fragments Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 49 Éléments de Base d’une Application Android
  • 50. Fragments: Cycle de Vie Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 50 Éléments de Base d’une Application Android Etatde l’Activité Created Started Resumed
  • 51. Fragments: Cycle de Vie Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 51 É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.
  • 52. Fragments: Cycle de Vie Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 52 Éléments de Base d’une Application Android Etatde l’Activité Paused Stopped Destroyed
  • 53. Fragments: Cycle de Vie Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 53 Éléments de Base d’une Application Android Invoquée quand la hiérarchie de View associée avecle fragment est enlevée. Invoquée quand le fragment est dissocié de l’ Activity
  • 54. Autres Composants 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 Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 54 Éléments de Base d’une Application Android
  • 55. Broadcast Intent • Intent envoyé à toutes les applications qui ont souscrit au Broadcast Receiver • Envoyés par le système Android, par exemple, pour indiquer les changements de l’appareil • Démarrage terminé, connexion à un appareil externe ou écran allumé/éteint • Peut être: • Normal (ou asynchrone): envoyé à tous les Broadcast Receivers en même temps • Ordonné: envoyé à un receiver, qui peut, soit le tuer, soit le passer à un autre Broadcast Receiver Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 55 Éléments de Base d’une Application Android
  • 56. Broadcast Receiver • Mécanisme avec lequel les applications peuvent répondre aux Broadcast Intents • Doit être souscrit par une application, et configuré dans un Intent Filter, pour indiquer le type de broadcast auquel elle est intéressée. • Quand un intent correspondant est diffusé • Le Broadcast Receiver est invoqué par l’environnement d’exécution Android, même si l’application intéressée n’est pas démarrée • Le Broadcast Receiver a 5 secondes pour compléter les tâches qu’il a à faire • Lancement d’un service, mise à jour de données ou notification à un utilisateur • S’exécute en arrière plan et n’a pas d’interface utilisateur Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 56 Éléments de Base d’une Application Android Voir Exemple : BroadcastReceiverTest
  • 57. Content Provider • Implémente un mécanisme pour le partage de données entre applications • Toute application peut fournir les autres applications avec un accès à ses données sous-jacentes via l’implémentation d’un Content Provider permettant d’ajouter, supprimer et lancer des requêtes sur les données • Définit des URI pour l’accès aux données • Données peuvent être partagées sous forme de fichier ou de base de données SQLite • Existence de Content Providers standards dans le runtime Android pour accès aux données: Contacts ou Fichiers Média Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 57 Éléments de Base d’une Application Android Voir Exemple : ContentProviderTest
  • 58. Service • Processus qui tourne en arrière plan et n’a pas d’interface • Peut être démarré et géré à partir d’activités, de Broadcast Receivers ou autres services • Idéal pour des situations où une application a besoin de continuer à réaliser des tâches sans avoir besoin d’une interface visible pour l’utilisateur • Peut notifier les utilisateurs d’évènements grâce aux notifications et toasts • Peut lancer des Intents • Services ont une plus forte priorité que les autres processus et sont terminés en dernier par le système, s’il a besoin de ressources • Le service sera redémarré automatiquement dès que les ressources nécessaires sont disponibles à nouveau Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 58 Éléments de Base d’une Application Android
  • 59. SERVICES ANDROID Chp4 : Développement Android Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 59 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
  • 60. Types de Services • Deux utilisations de services • Local vs global • Started vs Bound • Cycle de vie spécifique aux services (quelque soit leur type) • Services « Locaux » • Service personnel, inaccessible pour les autres applications • Service, Intent, IntentService • En accès restreint • Peu utilisés en pratique • Services « Distants » • Accessible aux autres applications • Langage commun AIDL pour définir les interfaces • Recherche du service, IBinder, Connection Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 60 Services Android
  • 61. Cycle de Vie d’un Service Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 61 Services Android StartedService Bound Service
  • 62. Services « Started » • Démarré par un autre composant de l’application (ex Activity) suite à l’appel de startService() et implémente onStartCommand() • Une fois démarré, il peut s’exécuterindéfiniment en arrière plan • Même si le composant qui l’a démarré est détruit • En général : Réalise une seule opération et ne retourne pas de résultat au processus qui l’a déclenché • Le service doit se terminer explicitement: • Soit lui-même : appel à stopSelf() • Soit par une application cliente : appel à stopService() • Exemple : service de téléchargement / upload de fichiers Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 62 Services Android Voir Exemple : ServiceExample
  • 63. Services « Bound » • Un composant de l’application se connecte à ce service en appelant bindService() • Un service Bound offre une interface qui permet à ses clients d’interagir avec lui • Envoyer des requêtes / Recevoir des réponses • Même s’il est sur un autre processus à via IPC • S ’exécute uniquement quand un autre composant de l’application est connecté à lui • Plusieurs composants peuvent se connecter au service en même temps • Le service est détruit quand tous les composants se déconnectent • Destruction automatique par le système Android • Exemple: • Lecture d’un fichier MP3, et commande d’arrêt/pause/replay… via l’interface Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 63 Services Android Voir Exemple : RemoteBoundService
  • 64. Services « Mixtes » • Un service peut être à la fois Started et Bound • Started • S’exécute indéfiniment • Implémente la méthode onStartCommand() • Bound • Est relié à un composant (activité ou autre) • Implémente la méthode onBind() • Dans tous les cas (Started, Bound ou Mixte) • Par défaut, tout composant, même à partir d’une autre application, peut lancer un service grâce aux Intents • Il est possible de déclarer un service comme étant Privé à l’application • Dans le Manifest Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 64 Services Android
  • 65. Intent Service • Classe utilitaire • Sous-classe de Service • Lance un « worker thread » pour gérer les tâches en arrière plan de manière asynchrone • Les requêtes sont stockées dans des queues (files d’attente) et traitées séquentiellement (dans leur ordre d’arrivée) • Une opération lancée dans un IntentService ne peut pas être interrompue • Quand toutes les requêtes sont exécutées, le thread termine • On doit implémenter la méthode onHandleIntent • Code à exécuter pour chaque requête Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 65 Services Android Voir Exemple : ServiceExample
  • 66. Services et Threads • Par défaut, un service s’exécute dans le thread principal du processus qui le contient • Si le service réalise des opérations de calcul intensif ou des opérations bloquantes (lecture mp3, communication réseau) le développeur doit (explicitement) créer un nouveau thread pour le service pour réaliser ces tâches • Sauf dans le cas d’un IntentService, qui tourne par défaut sur son propre worker thread • Objectifs : • Garder le thread principal réactif vis à vis des interactions avec l’utilisateur • Réduire le risque du problème : Application Not Responding (ANR) Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 66 Services Android
  • 67. Services ou Threads ? • Un service est simplement un composant qui peut fonctionner en arrière- plan même si l'utilisateur n'interagit pas avec votre application. • On doit créer un service uniquement pour cet objectif • Si le besoin est d'effectuer un travail en dehors du thread principal, mais seulement pendant que l'utilisateur interagit avec l’application à Il est recommandé de créer un nouveau thread et non pas un service • Exemple ( jouer de la musique uniquement quand votre activité s’exécute): • Créer un thread dans onCreate () • Commencer à l’exécuter dans onStart () • Puis l'arrêter dans onStop (). • Rappel : un service fonctionne par défaut dans le thread principal de l'application • Il faut toujours créer un nouveau thread dans le service s’il effectue des opérations intensives ou bloquantes. Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 67 Services Android
  • 68. Références • Dr. M. W. Youssef, « Développement Mobile (Android) », Institut Supérieur d’Informatique, 2014 • Site officiel du développeur Android: developer.android.com, consulté le 04/2015 • Technotopia: http://www.techotopia.com/index.php consulté le 04/2015 Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 68 Sites Web & Cours