chp4 - applications android

68
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

Upload: lilia-sfaxi

Post on 20-Jul-2015

176 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Chp4 - Applications Android

Chp5 : Développement AndroidCycle de Vie, Composants Principaux, Comportement…

Conception et Développement d’Applications MobilesGL4 (Optio n Mo bile) - 2016

Dr. Li l ia S FA X Iwww.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 1

Page 2: Chp4 - Applications Android

PLAN

1. Environnement de Développement Android2. Architecture Android3. Conduite d’un Projet d’App. Android4. Structure d’une Application Android

5. Cycle de Vie d’une Application Android6. Éléments de Base d’une Application Android7. Services Android

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 2

Chp4 : Développement Android

Page 3: Chp4 - Applications Android

ENVIRONNEMENT DE DÉVELOPPEMENT ANDROIDChp4 : Développement Android

Dr. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 3

1. Environnement de Développement Android2. Architecture Android3. Conduite d’un Projet d’App. Android4. Structure d’une Application Android5. Cycle de V ie d’une Application Android6. Éléments de Base d’une Application Android7. Services Android

Page 4: Chp4 - Applications 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• Uti lisation de la même API

• Exécution sur le même run time

Dr. Li l ia S FA X Iwww.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 4

Environnement de Développement Android

Page 5: Chp4 - Applications 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 RubinCofondateur et ancien CEO de Danger Inc. et du Système d’Exploitation Android Inc.

http://go o gleblo g.blo gspo t.co m/2007/11/wheres-my-gpho ne.html

Dr. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 5

Environnement de Développement Android

Page 6: Chp4 - Applications Android

Android est:

• Une combinaison de trois éléments:1. Un système d’exploitation open source pour terminaux mobiles2. Une plateforme de dév. open source pour créer des applications

mobiles3. 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. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 6

Environnement de Développement Android

Page 7: Chp4 - Applications Android

Distribution des Versions (Avril 2015)

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 7

Environnement de Développement Android

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

Page 8: Chp4 - Applications Android

ARCHITECTURE ANDROIDChp4 : Développement Android

Dr. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 8

1. Environnement de Développement Android2. Architecture Android3. Conduite d’un Projet d’App. Android4. Structure d’une Application Android5. Cycle de V ie d’une Application Android6. Éléments de Base d’une Application Android7. Services Android

Page 9: Chp4 - Applications Android

Android SW Stack

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 9

Architecture Android

Page 10: Chp4 - Applications Android

SW Stack (1): Linux Kernel

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 1 0

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.

Page 11: Chp4 - Applications Android

SW Stack (2): Android Runtime

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 1 1

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 .

Page 12: Chp4 - Applications Android

SW Stack (3): Libraries

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 1 2

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

Page 13: Chp4 - Applications Android

SW Stack (4): Applications Framework

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 1 3

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.

Page 14: Chp4 - Applications Android

SW Stack (5): Applications

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 1 4

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 ».

Page 15: Chp4 - Applications Android

CONDUITE D’UN PROJET D’APP. ANDROIDChp4 : Développement Android

Dr. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 1 5

1. Environnement de Développement Android2. Architecture Android3. Conduite d’un Projet d’App. Android4. Structure d’une Application Android5. Cycle de V ie d’une Application Android6. Éléments de Base d’une Application Android7. Services Android

Page 16: Chp4 - Applications Android

Point de Départ: IHM & UX

Dr. Lil ia S FA X Iwww.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 1 6

Conduite d’un Projet D’App. Android

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

Page 17: Chp4 - Applications Android

Étape 1: Planifier la Navigation entre Screens

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 1 7

Conduite d’un Projet D’App. Android

Page 18: Chp4 - Applications Android

Étape 2: Choisir les Patrons de Navigation

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 1 8

Conduite d’un Projet D’App. Android

Page 19: Chp4 - Applications Android

Étape 4: Définir les Screens (Wireframing)

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 1 9

Conduite d’un Projet D’App. Android

Page 20: Chp4 - Applications Android

Étape 5: Raffiner chaque Screen

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 2 0

Conduite d’un Projet D’App. Android

Attention: Il faut respecter les patrons de conception Android!

Page 21: Chp4 - Applications Android

Étape 6: Il Suffit de Coder…

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 2 1

Conduite d’un Projet D’App. Android

Page 22: Chp4 - Applications Android

Liens Utiles

http://developer.android.com

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

http://www.androidviews.net

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 2 2

Conduite d’un Projet D’App. Android

Page 23: Chp4 - Applications Android

STRUCTURE D’UNE APPLICATION ANDROIDChp4 : Développement Android

Dr. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 2 3

1. Environnement de Développement Android2. Architecture Android3. Conduite d’un Projet d’App. Android4. Structure d’une Application Android5. Cycle de V ie d’une Application Android6. Éléments de Base d’une Application Android7. Services Android

Page 24: Chp4 - Applications 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 uti lisés tels que NetBeans

• Un projet d’une application Android possède une arborescence spécifique.

Dr. Li l ia S FA X Iwww.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 2 4

Structure d’une Application Android

Page 25: Chp4 - Applications Android

Arborescence d’un Projet

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 2 5

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 par résolution d’écran)

Dossier contenant les fichiers décrivant des valeurs utilisées dans l’application.

Ex : strings.xml pour les 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

Page 26: Chp4 - Applications Android

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. Li l ia S FA X Iwww.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 2 6

Structure d’une Application Android

Page 27: Chp4 - Applications Android

CYCLE DE VIE D’UNE APPLICATION ANDROIDChp4 : Développement Android

Dr. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 2 7

1. Environnement de Développement Android2. Architecture Android3. Conduite d’un Projet d’App. Android4. Structure d’une Application Android5. Cycle de V ie d’une Application Android6. Éléments de Base d’une Application Android7. Services Android

Page 28: Chp4 - Applications 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. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 2 8

Cycle de Vie d’une Application Android

Vie d’une Application: Actif/Inactif

Visible / InvisibleDébut Fin

Page 29: Chp4 - Applications Android

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. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 2 9

Cycle de Vie d’une Application Android

Page 30: Chp4 - Applications Android

Pile d’Activités

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 3 0

Cycle de Vie d’une Application Android

Page 31: Chp4 - Applications 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. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 3 1

Cycle de Vie d’une Application Android

Page 32: Chp4 - Applications Android

Évènements du Cycle de Vie d’une Activité

• Quand une activité passe d’un état à un autre, le frameworkAndroid 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. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 3 2

Cycle de Vie d’une Application Android

Page 33: Chp4 - Applications Android

Évènements du Cycle de Vie d’une Activité

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 3 3

Cycle de Vie d’une Application Android

Page 34: Chp4 - Applications Android

Méthodes de Transition (1/6): onCreate

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 3 4

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

Page 35: Chp4 - Applications Android

Méthodes de Transition (2/6): onStart / onRestart

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 3 5

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

Page 36: Chp4 - Applications Android

Méthodes de Transition (3/6): onResume

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 3 6

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

Page 37: Chp4 - Applications Android

Méthodes de Transition (4/6): onPause

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 3 7

Cycle de Vie d’une Application Android

onPause• Appelée quand le système va démarrer une autre activité• Utilisée typiquement pour

• Consigner les données non sauvegardées• Arrêtées les animations ou tout ce qui consomme de la mémoire...

• Ne doit pas consommer beaucoup de temps, car l’activité suivante ne va démarrer que si cette méthode retourne

• Suivie de :• onResume si l’activité est rechargée en premier plan• onStop si l’activité devient invisible

• Dans cet état, l’activité peut être tuée par le système

Page 38: Chp4 - Applications Android

Méthodes de Transition (5/6): onStop

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 3 8

Cycle de Vie d’une Application Android

onStop• Appelée quand l’activité n’est plus visible à l’utilisateur• Peut arriver si:

• L’activité est détruite• Une autre activité a repris son exécution et l’a recouverte

• Suivie par:• onRestart si l’activité recommence à interagir avec l’utilisateur• onDestroy si l’activité va disparaître

• Dans cet état, l’activité peut être tuée par le système

Page 39: Chp4 - Applications Android

Méthodes de Transition (6/6): onDestroy

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 3 9

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

Page 40: Chp4 - Applications Android

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-li fecyc le/index.html

• Lien vers le code source :• http://developer.android.com /shareables/training/Activity Lifecyc le. zip

Dr. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 4 0

Cycle de Vie d’une Application Android

Page 41: Chp4 - Applications Android

ÉLÉMENTS DE BASE D’UNE APPLICATION ANDROIDChp4 : Développement Android

Dr. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 4 1

1. Environnement de Développement Android2. Architecture Android3. Conduite d’un Projet d’App. Android4. Structure d’une Application Android5. Cycle de V ie d’une Application Android6. Éléments de Base d’une Application Android7. Services Android

Page 42: Chp4 - Applications Android

Activity (Rappel)

• Une Activity est un composant d'application• Fournit un écran avec lequel les uti lisateurs peuvent interagir avec

l’application dans le but de faire quelque chose

• Téléphoner, prendre une photo, envoyez un e-mai l . . .

• 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 • Uti lisation des intents

Dr. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 4 2

Éléments de Base d’une Application Android

Page 43: Chp4 - Applications 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. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 4 3

Éléments de Base d’une Application Android

Page 44: Chp4 - Applications 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 uti lisé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. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 4 4

Éléments de Base d’une Application Android

Page 45: Chp4 - Applications 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. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 4 5

Éléments de Base d’une Application Android

Page 46: Chp4 - Applications 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. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 4 6

Éléments de Base d’une Application Android

Page 47: Chp4 - Applications 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é appelanteIntent 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éegetIntent().getStringExtra("cle")

Dr. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 4 7

Éléments de Base d’une Application Android

Page 48: Chp4 - Applications 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. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 4 8

Éléments de Base d’une Application Android

Page 49: Chp4 - Applications Android

Fragments

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 4 9

Éléments de Base d’une Application Android

Page 50: Chp4 - Applications Android

Fragments: Cycle de Vie

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 5 0

Éléments de Base d’une Application Android

Etat de l’Activité

Created

Started

Resumed

Page 51: Chp4 - Applications Android

Fragments: Cycle de Vie

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 5 1

É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.

Page 52: Chp4 - Applications Android

Fragments: Cycle de Vie

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 5 2

Éléments de Base d’une Application Android

Etat de l’Activité

Paused

Stopped

Destroyed

Page 53: Chp4 - Applications Android

Fragments: Cycle de Vie

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 5 3

Éléments de Base d’une Application Android

Invoquée quand la hiérarchie de Viewassociée avec le fragment est enlevée.

Invoquée quand le fragment est dissocié de l’ Activity

Page 54: Chp4 - Applications Android

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. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 5 4

Éléments de Base d’une Application Android

Page 55: Chp4 - Applications 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. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 5 5

Éléments de Base d’une Application Android

Page 56: Chp4 - Applications 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 IntentFilter, 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’i l a à faire• Lancement d’un service, mise à jo ur de do nnées o u no tificatio n à un uti l isateur

• S’exécute en arrière plan et n’a pas d’interface utilisateur

Dr. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 5 6

Éléments de Base d’une Application Android

Voir Exemple :BroadcastReceiverTest

Page 57: Chp4 - Applications Android

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. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 5 7

Éléments de Base d’une Application Android

Voir Exemple :ContentProviderTest

Page 58: Chp4 - Applications Android

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. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 5 8

Éléments de Base d’une Application Android

Page 59: Chp4 - Applications Android

SERVICES ANDROIDChp4 : Développement Android

Dr. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 5 9

1. Environnement de Développement Android2. Architecture Android3. Conduite d’un Projet d’App. Android4. Structure d’une Application Android5. Cycle de Vie d’une Application Android6. Éléments de Base d’une Application Android7. Services Android

Page 60: Chp4 - Applications 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 uti lisés en pratique

• Services « Distants »• Accessible aux autres applications• Langage commun AIDL pour définir les interfaces• Recherche du service, IB inder, Connection

Dr. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 6 0

Services Android

Page 61: Chp4 - Applications Android

Cycle de Vie d’un Service

Dr. Lil ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 6 1

Services Android

Started Service Bound Service

Page 62: Chp4 - Applications Android

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écuter indé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. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 6 2

Services Android

Voir Exemple :ServiceExample

Page 63: Chp4 - Applications Android

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. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 6 3

Services Android

Voir Exemple :RemoteBoundService

Page 64: Chp4 - Applications Android

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. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 6 4

Services Android

Page 65: Chp4 - Applications 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. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 6 5

Services Android

Voir Exemple :ServiceExample

Page 66: Chp4 - Applications Android

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’uti lisateur• Réduire le risque du problème : Application Not Responding (ANR)

Dr. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 6 6

Services Android

Page 67: Chp4 - Applications 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. Li l ia S FA X I www.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 6 7

Services Android

Page 68: Chp4 - Applications 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. Lil ia S FA X Iwww.li l ia s fa x i.wix .com /li l ia s fa x i

S lide 6 8

Sites Web & Cours