SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
Autres Composants Avancés
Services, Broadcast Receivers, Content Providers
Formation Mobile
27 Aout au 1 Septembre 2015
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 1
BROADCAST RECEIVERS
Autres Composants Avancés
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 2
Definition
•  Un Broadcast Receiver est un composant qui répond à des annonces
diffusées pour tout le système
•  Plusieurs broadcasts sont originaires du système, par ex:
•  Annonce que l’écran est éteint
•  Le niveau de la batterie est bas
•  Une photo a été prise…
•  D’autres sont initiés par des applications
•  Par ex, annoncer à une autre application que des données ont été
téléchargées et disponibles pour être utilisées
•  N’ont pas d’interface, mais…
•  Peuvent afficher une notification dans la barre de statut pour alerter
l’utilisateur
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 3
Broadcast Receivers
Broadcast Intent
•  Intent envoyé à toutes les applications qui ont souscrit à un
Broadcast Receiver
•  Envoyé 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 4
Broadcast Receivers
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 5
Broadcast Receivers
Code: Broadcast Intent
•  Pour créer un Broadcast Intent, il faut:
•  Créer dans le listener de l’évènement qui va déclencher
le broadcast:
•  Un nouvel intent i
•  Définir une action pour cet intent avec la méthode i.setAction
•  Déclencher le broadcast avec la méthode sendBroadcast(i)
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 6
Broadcast Receivers
Code: Broadcast Receiver
•  Pour créer un Broadcast Receiver, il faut:
•  Créer un nouveau projet sans Activité
•  Dans votre projet, choisir New -> Other -> Broadcast Receiver
•  Vous remarquerez que:
•  Une nouvelle classe étendant BroadcastReceiver a été créée
•  Un nouvel élément receiver a été rajouté à votre fichier Manifest
•  Implémenter la méthode onReceive de votre receiver, qui
indiquera le comportement à adopter à la réception de
l’évènement diffusé
•  Ajouter dans le fichier Manifest pour ce receiver, sous l’élément
« intent filters », l’action que vous avez précédemment associé
au Broadcast Intent
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 7
Broadcast Receivers
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 8
Broadcast Intent
activity_send_broadcast.xml
SendBroadcastActivity.java
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 9
Broadcast Receiver
MyReceiver.java
AndroidManifest.xml
Broadcast Intent Prédéfini: au
déclenchement du mode Avion
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 10
Broadcast Receiver: Comportement
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 11
Broadcast Receiver: Comportement
CONTENT PROVIDER
Autres Composants Avancés
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 12
Content Provider
•  Gère l’accès à des données structurées
•  Implémente un mécanisme pour le partage de données entre
applications
•  Toute application peut fournir aux autres applications 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 13
Content Providers
Quand implémenter un Content Provider?
•  Vous avez besoin d’un Content Provider quand vous voulez:
•  Offrir des données complexes ou des fichiers à d’autres
applications
•  Permettre aux utilisateurs de copier des données complexes
vers d’autres applications
•  Fournir des suggestions de recherche pour votre application en
utilisant le framework de recherche
•  Vous n’avez pas besoin d’un Content Provider :
•  Pour utiliser une base de données SQLite, si l’utilisation est
entièrement interne à votre application
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 14
Content Providers
Content Provider: Etapes
1.  Concevoir votre espace de stockage pour vos données. Il peut être
sous la forme de:
•  Fichiers
•  Photos, audio ou vidéos
•  Les stocker dans l’espace privé de votre application
•  Données Structurées
•  Données dans des bases de données, tableaux…
•  Stocker les données dans une forme compatible avec des tables de lignes/
colonnes
2.  Définir une implémentation concrète du ContentProvider et ses
méthodes requises
3.  Définir les URIs, les noms de colonnes du provider, les intent actions,
les permissions…
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 15
Content Providers
Code: Content Provider
•  Pour accéder aux données d’un content provider, utiliser un
ContentResolver dans le contexte de votre application
•  Communique avec l’objet Provider (une instance de la classe implémentant
ContentProvider)
•  L’objet provider reçoit des requêtes des clients, les exécute et retourne le
résultat
•  Implémenter les méthodes suivantes de ContentProvider
•  query(): extraction de données du provider
•  insert(): insertion d’une nouvelle ligne dans votre provider
•  update(): modification d’une ligne existante de votre provider
•  delete(): suppression d’une ligne de votre provider
•  getType(): retourne le type MIME correspondant à un URI
•  onCreate(): initialisation du provider
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 16
Content Providers
SERVICES
Autres Composants Avancés
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 17
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 18
Services
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 19
Services
Cycle de Vie d’un Service
Dr. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 20
Services
Started Service 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é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. Lilia SFAXI
www.liliasfaxi.wix.com/liliasfaxi
Slide 21
Services
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 22
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 23
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 24
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 25
Services
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 26
Services

Mais conteúdo relacionado

Mais procurados

Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystémeAlgeria JUG
 
Mobile-Chp4 côté serveur
Mobile-Chp4 côté serveurMobile-Chp4 côté serveur
Mobile-Chp4 côté serveurLilia Sfaxi
 
Windows phone 7 sync application sur Azure, création d'application offline re...
Windows phone 7 sync application sur Azure, création d'application offline re...Windows phone 7 sync application sur Azure, création d'application offline re...
Windows phone 7 sync application sur Azure, création d'application offline re...Microsoft Décideurs IT
 
Front end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitéeFront end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitéeOuadie LAHDIOUI
 
Spring 3 en production
Spring 3 en productionSpring 3 en production
Spring 3 en productionJulien Dubois
 
Meet up paris 13 of jun 2017
Meet up paris 13 of jun 2017Meet up paris 13 of jun 2017
Meet up paris 13 of jun 2017Jasmine Conseil
 
Chp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileChp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileLilia Sfaxi
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVCNathaniel Richand
 
Ouvrir son SI avec la trilogie Portail, SOA, BPM (Solutions Linux 2010 - cycl...
Ouvrir son SI avec la trilogie Portail, SOA, BPM (Solutions Linux 2010 - cycl...Ouvrir son SI avec la trilogie Portail, SOA, BPM (Solutions Linux 2010 - cycl...
Ouvrir son SI avec la trilogie Portail, SOA, BPM (Solutions Linux 2010 - cycl...Marc Dutoo
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les basesAntoine Rey
 
Tech Days Spring Intégration
Tech Days Spring IntégrationTech Days Spring Intégration
Tech Days Spring IntégrationArrow-Institute
 
Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)Eric SIBER
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
De Maven à SBT ScalaIO 2013
De Maven à SBT ScalaIO 2013De Maven à SBT ScalaIO 2013
De Maven à SBT ScalaIO 2013Stephane Manciot
 

Mais procurados (20)

Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystéme
 
Framework php « Codeignitor »
Framework php « Codeignitor » Framework php « Codeignitor »
Framework php « Codeignitor »
 
J2ee
J2eeJ2ee
J2ee
 
Mobile-Chp4 côté serveur
Mobile-Chp4 côté serveurMobile-Chp4 côté serveur
Mobile-Chp4 côté serveur
 
Spring & SpringBatch FR
Spring & SpringBatch FRSpring & SpringBatch FR
Spring & SpringBatch FR
 
Windows phone 7 sync application sur Azure, création d'application offline re...
Windows phone 7 sync application sur Azure, création d'application offline re...Windows phone 7 sync application sur Azure, création d'application offline re...
Windows phone 7 sync application sur Azure, création d'application offline re...
 
Front end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitéeFront end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitée
 
Web services SOAP et REST
Web services  SOAP et RESTWeb services  SOAP et REST
Web services SOAP et REST
 
Spring 3 en production
Spring 3 en productionSpring 3 en production
Spring 3 en production
 
Meet up paris 13 of jun 2017
Meet up paris 13 of jun 2017Meet up paris 13 of jun 2017
Meet up paris 13 of jun 2017
 
Chp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileChp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement Mobile
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
Ouvrir son SI avec la trilogie Portail, SOA, BPM (Solutions Linux 2010 - cycl...
Ouvrir son SI avec la trilogie Portail, SOA, BPM (Solutions Linux 2010 - cycl...Ouvrir son SI avec la trilogie Portail, SOA, BPM (Solutions Linux 2010 - cycl...
Ouvrir son SI avec la trilogie Portail, SOA, BPM (Solutions Linux 2010 - cycl...
 
P5 stockage
P5 stockageP5 stockage
P5 stockage
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
Tech Days Spring Intégration
Tech Days Spring IntégrationTech Days Spring Intégration
Tech Days Spring Intégration
 
Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
Maven
MavenMaven
Maven
 
De Maven à SBT ScalaIO 2013
De Maven à SBT ScalaIO 2013De Maven à SBT ScalaIO 2013
De Maven à SBT ScalaIO 2013
 

Destaque

Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menusLilia Sfaxi
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web servicesLilia Sfaxi
 
Android-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursAndroid-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursLilia Sfaxi
 
Android-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsAndroid-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsLilia Sfaxi
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à androidLilia Sfaxi
 
Android-Tp4: stockage
Android-Tp4: stockageAndroid-Tp4: stockage
Android-Tp4: stockageLilia Sfaxi
 

Destaque (6)

Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menus
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web services
 
Android-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursAndroid-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateurs
 
Android-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsAndroid-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intents
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à android
 
Android-Tp4: stockage
Android-Tp4: stockageAndroid-Tp4: stockage
Android-Tp4: stockage
 

Semelhante a P6 composants avancés

Introduction à Cloud Foundry Journée du Code 2017
Introduction à Cloud Foundry Journée du Code 2017Introduction à Cloud Foundry Journée du Code 2017
Introduction à Cloud Foundry Journée du Code 2017Gerard Konan
 
Cloud computing cours in power point chap
Cloud computing cours in power point chapCloud computing cours in power point chap
Cloud computing cours in power point chapaichafarahsouelmi
 
4 asynch task_services_thread
4 asynch task_services_thread4 asynch task_services_thread
4 asynch task_services_threadSaber LAJILI
 
Introduction à Cloud Foundry et au PaaS
Introduction à Cloud Foundry et au PaaSIntroduction à Cloud Foundry et au PaaS
Introduction à Cloud Foundry et au PaaSGerard Konan
 
Introduction au Cloud computing
Introduction au Cloud computingIntroduction au Cloud computing
Introduction au Cloud computingPhilippe Scoffoni
 
Présentation GLPI aux RMLL 2017
Présentation GLPI aux RMLL 2017Présentation GLPI aux RMLL 2017
Présentation GLPI aux RMLL 2017Nouh Walid
 
20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You Ready20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You ReadyGeoffray Gruel
 
Documentation agile - Retours d'expérience d'AgileSoft.NC
Documentation agile - Retours d'expérience d'AgileSoft.NCDocumentation agile - Retours d'expérience d'AgileSoft.NC
Documentation agile - Retours d'expérience d'AgileSoft.NCPascal Le Léannec
 
XebiCon'16 : Architecture MicroServices avec Azure par Michel Hubert, CTO de ...
XebiCon'16 : Architecture MicroServices avec Azure par Michel Hubert, CTO de ...XebiCon'16 : Architecture MicroServices avec Azure par Michel Hubert, CTO de ...
XebiCon'16 : Architecture MicroServices avec Azure par Michel Hubert, CTO de ...Publicis Sapient Engineering
 
BreizhCamp 2022
BreizhCamp 2022BreizhCamp 2022
BreizhCamp 2022SpikeeLabs
 
Xebicon architectures microservices azure v1.0
Xebicon   architectures microservices azure v1.0Xebicon   architectures microservices azure v1.0
Xebicon architectures microservices azure v1.0Michel HUBERT
 
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
 
Déploiement d’applications
Déploiement d’applicationsDéploiement d’applications
Déploiement d’applicationsMohammed Jaafar
 
ExperienceNow - Découvrez comment Soitec modernise son IT et gagne en agilité...
ExperienceNow - Découvrez comment Soitec modernise son IT et gagne en agilité...ExperienceNow - Découvrez comment Soitec modernise son IT et gagne en agilité...
ExperienceNow - Découvrez comment Soitec modernise son IT et gagne en agilité...Devoteam
 
LabVIEW™ internet and network applications
LabVIEW™ internet and network applicationsLabVIEW™ internet and network applications
LabVIEW™ internet and network applicationsAlexandre STANURSKI
 
Introduction DevOps & containarization des applications
Introduction DevOps & containarization des applicationsIntroduction DevOps & containarization des applications
Introduction DevOps & containarization des applicationsJulien Chable
 
What’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. DarmontWhat’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. DarmontZenika
 

Semelhante a P6 composants avancés (20)

Android
AndroidAndroid
Android
 
Introduction à Cloud Foundry Journée du Code 2017
Introduction à Cloud Foundry Journée du Code 2017Introduction à Cloud Foundry Journée du Code 2017
Introduction à Cloud Foundry Journée du Code 2017
 
Cloud computing cours in power point chap
Cloud computing cours in power point chapCloud computing cours in power point chap
Cloud computing cours in power point chap
 
4 asynch task_services_thread
4 asynch task_services_thread4 asynch task_services_thread
4 asynch task_services_thread
 
Apple - WWDC 2018
Apple - WWDC 2018Apple - WWDC 2018
Apple - WWDC 2018
 
Introduction à Cloud Foundry et au PaaS
Introduction à Cloud Foundry et au PaaSIntroduction à Cloud Foundry et au PaaS
Introduction à Cloud Foundry et au PaaS
 
Introduction au Cloud computing
Introduction au Cloud computingIntroduction au Cloud computing
Introduction au Cloud computing
 
Présentation GLPI aux RMLL 2017
Présentation GLPI aux RMLL 2017Présentation GLPI aux RMLL 2017
Présentation GLPI aux RMLL 2017
 
20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You Ready20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You Ready
 
Cloud migration
Cloud migrationCloud migration
Cloud migration
 
Documentation agile - Retours d'expérience d'AgileSoft.NC
Documentation agile - Retours d'expérience d'AgileSoft.NCDocumentation agile - Retours d'expérience d'AgileSoft.NC
Documentation agile - Retours d'expérience d'AgileSoft.NC
 
XebiCon'16 : Architecture MicroServices avec Azure par Michel Hubert, CTO de ...
XebiCon'16 : Architecture MicroServices avec Azure par Michel Hubert, CTO de ...XebiCon'16 : Architecture MicroServices avec Azure par Michel Hubert, CTO de ...
XebiCon'16 : Architecture MicroServices avec Azure par Michel Hubert, CTO de ...
 
BreizhCamp 2022
BreizhCamp 2022BreizhCamp 2022
BreizhCamp 2022
 
Xebicon architectures microservices azure v1.0
Xebicon   architectures microservices azure v1.0Xebicon   architectures microservices azure v1.0
Xebicon architectures microservices azure v1.0
 
Projet de fin d étude (1)
Projet de fin d étude (1)Projet de fin d étude (1)
Projet de fin d étude (1)
 
Déploiement d’applications
Déploiement d’applicationsDéploiement d’applications
Déploiement d’applications
 
ExperienceNow - Découvrez comment Soitec modernise son IT et gagne en agilité...
ExperienceNow - Découvrez comment Soitec modernise son IT et gagne en agilité...ExperienceNow - Découvrez comment Soitec modernise son IT et gagne en agilité...
ExperienceNow - Découvrez comment Soitec modernise son IT et gagne en agilité...
 
LabVIEW™ internet and network applications
LabVIEW™ internet and network applicationsLabVIEW™ internet and network applications
LabVIEW™ internet and network applications
 
Introduction DevOps & containarization des applications
Introduction DevOps & containarization des applicationsIntroduction DevOps & containarization des applications
Introduction DevOps & containarization des applications
 
What’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. DarmontWhat’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. Darmont
 

Mais 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
 

Mais 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
 

P6 composants avancés

  • 1. Autres Composants Avancés Services, Broadcast Receivers, Content Providers Formation Mobile 27 Aout au 1 Septembre 2015 Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 1
  • 2. BROADCAST RECEIVERS Autres Composants Avancés Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 2
  • 3. Definition •  Un Broadcast Receiver est un composant qui répond à des annonces diffusées pour tout le système •  Plusieurs broadcasts sont originaires du système, par ex: •  Annonce que l’écran est éteint •  Le niveau de la batterie est bas •  Une photo a été prise… •  D’autres sont initiés par des applications •  Par ex, annoncer à une autre application que des données ont été téléchargées et disponibles pour être utilisées •  N’ont pas d’interface, mais… •  Peuvent afficher une notification dans la barre de statut pour alerter l’utilisateur Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 3 Broadcast Receivers
  • 4. Broadcast Intent •  Intent envoyé à toutes les applications qui ont souscrit à un Broadcast Receiver •  Envoyé 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 4 Broadcast Receivers
  • 5. 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 5 Broadcast Receivers
  • 6. Code: Broadcast Intent •  Pour créer un Broadcast Intent, il faut: •  Créer dans le listener de l’évènement qui va déclencher le broadcast: •  Un nouvel intent i •  Définir une action pour cet intent avec la méthode i.setAction •  Déclencher le broadcast avec la méthode sendBroadcast(i) Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 6 Broadcast Receivers
  • 7. Code: Broadcast Receiver •  Pour créer un Broadcast Receiver, il faut: •  Créer un nouveau projet sans Activité •  Dans votre projet, choisir New -> Other -> Broadcast Receiver •  Vous remarquerez que: •  Une nouvelle classe étendant BroadcastReceiver a été créée •  Un nouvel élément receiver a été rajouté à votre fichier Manifest •  Implémenter la méthode onReceive de votre receiver, qui indiquera le comportement à adopter à la réception de l’évènement diffusé •  Ajouter dans le fichier Manifest pour ce receiver, sous l’élément « intent filters », l’action que vous avez précédemment associé au Broadcast Intent Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 7 Broadcast Receivers
  • 8. Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 8 Broadcast Intent activity_send_broadcast.xml SendBroadcastActivity.java
  • 9. Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 9 Broadcast Receiver MyReceiver.java AndroidManifest.xml Broadcast Intent Prédéfini: au déclenchement du mode Avion
  • 10. Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 10 Broadcast Receiver: Comportement
  • 11. Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 11 Broadcast Receiver: Comportement
  • 12. CONTENT PROVIDER Autres Composants Avancés Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 12
  • 13. Content Provider •  Gère l’accès à des données structurées •  Implémente un mécanisme pour le partage de données entre applications •  Toute application peut fournir aux autres applications 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 13 Content Providers
  • 14. Quand implémenter un Content Provider? •  Vous avez besoin d’un Content Provider quand vous voulez: •  Offrir des données complexes ou des fichiers à d’autres applications •  Permettre aux utilisateurs de copier des données complexes vers d’autres applications •  Fournir des suggestions de recherche pour votre application en utilisant le framework de recherche •  Vous n’avez pas besoin d’un Content Provider : •  Pour utiliser une base de données SQLite, si l’utilisation est entièrement interne à votre application Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 14 Content Providers
  • 15. Content Provider: Etapes 1.  Concevoir votre espace de stockage pour vos données. Il peut être sous la forme de: •  Fichiers •  Photos, audio ou vidéos •  Les stocker dans l’espace privé de votre application •  Données Structurées •  Données dans des bases de données, tableaux… •  Stocker les données dans une forme compatible avec des tables de lignes/ colonnes 2.  Définir une implémentation concrète du ContentProvider et ses méthodes requises 3.  Définir les URIs, les noms de colonnes du provider, les intent actions, les permissions… Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 15 Content Providers
  • 16. Code: Content Provider •  Pour accéder aux données d’un content provider, utiliser un ContentResolver dans le contexte de votre application •  Communique avec l’objet Provider (une instance de la classe implémentant ContentProvider) •  L’objet provider reçoit des requêtes des clients, les exécute et retourne le résultat •  Implémenter les méthodes suivantes de ContentProvider •  query(): extraction de données du provider •  insert(): insertion d’une nouvelle ligne dans votre provider •  update(): modification d’une ligne existante de votre provider •  delete(): suppression d’une ligne de votre provider •  getType(): retourne le type MIME correspondant à un URI •  onCreate(): initialisation du provider Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 16 Content Providers
  • 17. SERVICES Autres Composants Avancés Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 17
  • 18. 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 18 Services
  • 19. 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 19 Services
  • 20. Cycle de Vie d’un Service Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 20 Services Started Service Bound Service
  • 21. 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. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 21 Services Voir Exemple : ServiceExample
  • 22. 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 22 Services Android Voir Exemple : RemoteBoundService
  • 23. 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 23 Services Android
  • 24. 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 24 Services Android Voir Exemple : ServiceExample
  • 25. 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 25 Services
  • 26. 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 26 Services