SlideShare une entreprise Scribd logo
1  sur  18
AsynchTask, Service, Thread 
Version Janvier 2014 
1Saber LAJILI
AsynTask 
AsyncTask? AsyncTaskestuneclasseabstraitegénérique 
Nécessairepour optimiserl’exécutiondes opérationslonguesen background 
Retourneson résultatdansUI thread (actvitécourante) sans êtreobligéde manipulerles threads 
L’applicationprincipalese lance dansun seulthread 
En casd’accèsà un serveuren réseau(Exp: authentification) , l’interfaceuser resteen attentesans réponse!!! En casde crash l’applicationen entierse crash!!! 2 
Saber LAJILI
Solution 
Implémenter ce type de traitement dans un nouveau thread sans manipuler les thread par : AsynchTask 
Possibilité d’annuler la tâche (Task) sans perturber le UI principale3 
Saber LAJILI
Définition 
1.Etendre la classe générique AsynchTaskuses 3 types <Params, Progress, Result> 
1.Params–the input. what you pass to the AsyncTask 
2.Progress–if you have any updates, passed to onProgressUpdate() 
3.Result–the output. what returns doInBackground() 
2.Surcharger les méthodes : 
1.onPreExecute() 
2.doInBackground(Params…) 
3.onProgressUpdate() 
4.onPostExecute(Result) 
4 
Saber LAJILI
Principe d’exécution 
1.Uneinstance de task crééestexécutéepar la méthode“execute()” 
1.“execute()” fait appelà doInBackground(Params) et onPostExecute(Result) 
2.Le paramètre input paramsest passé à doInBackground(Params…) et à onPostExecute(Result) 
3.doInBackground(Params…) contient le code à exécuter dans le nouveau thread 
4.onPostExecute(Result) se synchronise avec l’activité principale et le permet de se modifier 
5Saber LAJILI
Démo 
ProgressDialogProgressBar 
6 
Saber LAJILI
Service 
Un service est un composant qui s'exécute en arrière-plan, sans IHM 
Un service n'a pas de durée définie 
la fin d’une activité n’entraine pas sa terminaison 
Nécessaire pour les opérations longues et répétitives (Exp: les téléchargements sur Internet) 
Un service s'exécute par défaut dans le processus principal de l'application. 
Possible de l’exécuter dans un nouveau thread 
7 
Saber LAJILI
8 
Saber LAJILI
Servicecycle de vie 
Types de services : 
Startedservice 
Boundedservice 
9Saber LAJILI
ServiceCréation 
Démarrage et arrêt d’un service10 
Saber LAJILI
StartedServicecréation et exécution 
Démo: 
1. Créer une nouvelle classe qui étend la classe « Service » 
2. Redéfinir ses méthodes 
3. Déclarer ce service comme composant dans le fichier manifest.xml 
4. Appeler/arrêter ce service par startService() et stopService(). 11 
Saber LAJILI
StartedServiceDémo12 
Saber LAJILI
BoundedService 
Un boundservice (service connecté) est un serveur dans une interface client-serveur 
Permet aux composants (tels que les activités, content Provider et service) de se lier au service, 
la liaison à un service, par la méthode onBind() 
Plusieurs clients peuvent se connecter au service à la fois 
ne s'exécute pas dans le fond indéfiniment 
Lorsque le dernier client se déconnecte du service, le système détruit le service13 
Saber LAJILI
Techniques de définition d’interface de programmation 
Étendre la classe Binder 
Utiliser un Messenger 
Utiliser AIDL (Android Interface DefinitionLanguage) 
14Saber LAJILI
Démo 
On se propose de réaliser un serveur de temps. Chaque fois que le client demande la date et l’heure, le serveur lui répond 
Démarche: 
Réaliser une activité qui demande le temps au près de serveur 
Interface de programmation: Binder 
15Saber LAJILI
Démo 
Côté service : 
Créer un service dans votre application en héritant de la classe « Service » 
Créer la classe "LocalBinder" dans votre service et étendre la classe "Binder". 
Dans cette classe implémenter la méthode « onBind() » du service ensuite retounerl’instance de la classe "LocalBinder" 16 
Saber LAJILI
Démo 
•Côté client « activity» : 
•Créer le composant "Client" de type activité et créer une instance de l’interface "ServiceConnection". 
•Implémenter les deux méthodes de cette interface onServiceConnected() et onServiceDisconnected(). 
•Dans la méthode onServiceConnected, vous allez avoir une instance de IBinder, ainsi forcez le comme type (castit) classe LocalBinderdéjà créé dans le service. 
•Implémenter la méthode onStart() et connecter au service en utilisant la méthode bindService() 
•Implémenter la méthode onStop() et déconnecter de service en utilisant la méthode unbindService() 17 
Saber LAJILI
Démo18 
Saber LAJILI

Contenu connexe

Tendances

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
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web servicesLilia Sfaxi
 
Code flow - Cocoaheads paris
Code flow - Cocoaheads parisCode flow - Cocoaheads paris
Code flow - Cocoaheads parisCocoaHeads France
 
Workshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring IntegrationWorkshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring IntegrationAntoine Rey
 
CocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads France
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web servicesLilia Sfaxi
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Antoine Rey
 
Introduction à Angular JS
Introduction à Angular JSIntroduction à Angular JS
Introduction à Angular JSAntoine Rey
 
Utilisation de ZK avec Java - Retour d’expérience
Utilisation de ZK avec Java - Retour d’expérienceUtilisation de ZK avec Java - Retour d’expérience
Utilisation de ZK avec Java - Retour d’expériencelouschwartz
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJSAbdoulaye Dieng
 
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
Workshop Spring  3 - Tests et techniques avancées du conteneur SpringWorkshop Spring  3 - Tests et techniques avancées du conteneur Spring
Workshop Spring 3 - Tests et techniques avancées du conteneur SpringAntoine Rey
 
Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)DNG Consulting
 
Xcode Server - Jeffrey Macko
Xcode Server - Jeffrey MackoXcode Server - Jeffrey Macko
Xcode Server - Jeffrey MackoCocoaHeads France
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partageraliagadir
 
Retours Devoxx France 2016
Retours Devoxx France 2016Retours Devoxx France 2016
Retours Devoxx France 2016Antoine Rey
 

Tendances (20)

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
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web services
 
Code flow - Cocoaheads paris
Code flow - Cocoaheads parisCode flow - Cocoaheads paris
Code flow - Cocoaheads paris
 
Spring ioc
Spring iocSpring ioc
Spring ioc
 
Workshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring IntegrationWorkshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring Integration
 
CocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - Epitez
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web services
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
Introduction à Angular JS
Introduction à Angular JSIntroduction à Angular JS
Introduction à Angular JS
 
Rapport tp2 j2ee
Rapport tp2 j2eeRapport tp2 j2ee
Rapport tp2 j2ee
 
Rapport tp3 j2ee
Rapport tp3 j2eeRapport tp3 j2ee
Rapport tp3 j2ee
 
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
Utilisation de ZK avec Java - Retour d’expérience
Utilisation de ZK avec Java - Retour d’expérienceUtilisation de ZK avec Java - Retour d’expérience
Utilisation de ZK avec Java - Retour d’expérience
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJS
 
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
Workshop Spring  3 - Tests et techniques avancées du conteneur SpringWorkshop Spring  3 - Tests et techniques avancées du conteneur Spring
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
 
Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)
 
Xcode Server - Jeffrey Macko
Xcode Server - Jeffrey MackoXcode Server - Jeffrey Macko
Xcode Server - Jeffrey Macko
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 
Angular 2
Angular 2Angular 2
Angular 2
 
Retours Devoxx France 2016
Retours Devoxx France 2016Retours Devoxx France 2016
Retours Devoxx France 2016
 

Similaire à 4 asynch task_services_thread

eServices-Tp2: bpel
eServices-Tp2: bpeleServices-Tp2: bpel
eServices-Tp2: bpelLilia Sfaxi
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web ServicesLilia Sfaxi
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWSLilia Sfaxi
 
Tp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELTp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELLilia Sfaxi
 
Aspnetcore introduction
Aspnetcore introductionAspnetcore introduction
Aspnetcore introductionMichel Bruchet
 
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2Mathias Seguy
 
Integration continue et déploiement automatisé
Integration continue et déploiement automatiséIntegration continue et déploiement automatisé
Integration continue et déploiement automatiséJérémie Campari
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile AppHabib MAALEM
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcoreMSDEVMTL
 
Architecture Client-Serveur
Architecture Client-Serveur Architecture Client-Serveur
Architecture Client-Serveur Khalid EDAIG
 
Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"Nazih Heni
 
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdfRAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdfSouf212
 
20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You Ready20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You ReadyGeoffray Gruel
 

Similaire à 4 asynch task_services_thread (20)

eServices-Tp2: bpel
eServices-Tp2: bpeleServices-Tp2: bpel
eServices-Tp2: bpel
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web Services
 
Axis2 services fr
Axis2 services frAxis2 services fr
Axis2 services fr
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWS
 
Tp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELTp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPEL
 
Atelier gwt
Atelier gwtAtelier gwt
Atelier gwt
 
Aspnetcore introduction
Aspnetcore introductionAspnetcore introduction
Aspnetcore introduction
 
OpenESB et BPEL
OpenESB et BPELOpenESB et BPEL
OpenESB et BPEL
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
 
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2
 
Integration continue et déploiement automatisé
Integration continue et déploiement automatiséIntegration continue et déploiement automatisé
Integration continue et déploiement automatisé
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile App
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcore
 
Tutoriel web service
Tutoriel  web serviceTutoriel  web service
Tutoriel web service
 
Architecture Client-Serveur
Architecture Client-Serveur Architecture Client-Serveur
Architecture Client-Serveur
 
Push Notification
Push Notification Push Notification
Push Notification
 
TFS
TFSTFS
TFS
 
Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"
 
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdfRAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
 
20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You Ready20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You Ready
 

Plus de Saber LAJILI

Cours android user_interface_2016
Cours android user_interface_2016Cours android user_interface_2016
Cours android user_interface_2016Saber LAJILI
 
Cours android 2016
Cours android 2016Cours android 2016
Cours android 2016Saber LAJILI
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Saber LAJILI
 
Liste exposés université privée leaders
Liste exposés université privée leadersListe exposés université privée leaders
Liste exposés université privée leadersSaber LAJILI
 
Exemple de création de base
Exemple de création de baseExemple de création de base
Exemple de création de baseSaber LAJILI
 
Mini projet android 2014 2015 iset nabeul sem3
Mini projet android 2014 2015 iset nabeul sem3Mini projet android 2014 2015 iset nabeul sem3
Mini projet android 2014 2015 iset nabeul sem3Saber LAJILI
 
Les capteurs sous android
Les capteurs sous androidLes capteurs sous android
Les capteurs sous androidSaber LAJILI
 
2 activity user_interface
2 activity user_interface2 activity user_interface
2 activity user_interfaceSaber LAJILI
 

Plus de Saber LAJILI (15)

Cours android user_interface_2016
Cours android user_interface_2016Cours android user_interface_2016
Cours android user_interface_2016
 
Cours android 2016
Cours android 2016Cours android 2016
Cours android 2016
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
 
Accueil.java
Accueil.javaAccueil.java
Accueil.java
 
Activity accueil
Activity accueilActivity accueil
Activity accueil
 
Main.xml
Main.xmlMain.xml
Main.xml
 
Liste exposés université privée leaders
Liste exposés université privée leadersListe exposés université privée leaders
Liste exposés université privée leaders
 
1 tours horizon
1 tours horizon1 tours horizon
1 tours horizon
 
Exemple de création de base
Exemple de création de baseExemple de création de base
Exemple de création de base
 
Mini projet android 2014 2015 iset nabeul sem3
Mini projet android 2014 2015 iset nabeul sem3Mini projet android 2014 2015 iset nabeul sem3
Mini projet android 2014 2015 iset nabeul sem3
 
Les capteurs sous android
Les capteurs sous androidLes capteurs sous android
Les capteurs sous android
 
F3
F3F3
F3
 
F1
F1F1
F1
 
F2
F2F2
F2
 
2 activity user_interface
2 activity user_interface2 activity user_interface
2 activity user_interface
 

4 asynch task_services_thread

  • 1. AsynchTask, Service, Thread Version Janvier 2014 1Saber LAJILI
  • 2. AsynTask AsyncTask? AsyncTaskestuneclasseabstraitegénérique Nécessairepour optimiserl’exécutiondes opérationslonguesen background Retourneson résultatdansUI thread (actvitécourante) sans êtreobligéde manipulerles threads L’applicationprincipalese lance dansun seulthread En casd’accèsà un serveuren réseau(Exp: authentification) , l’interfaceuser resteen attentesans réponse!!! En casde crash l’applicationen entierse crash!!! 2 Saber LAJILI
  • 3. Solution Implémenter ce type de traitement dans un nouveau thread sans manipuler les thread par : AsynchTask Possibilité d’annuler la tâche (Task) sans perturber le UI principale3 Saber LAJILI
  • 4. Définition 1.Etendre la classe générique AsynchTaskuses 3 types <Params, Progress, Result> 1.Params–the input. what you pass to the AsyncTask 2.Progress–if you have any updates, passed to onProgressUpdate() 3.Result–the output. what returns doInBackground() 2.Surcharger les méthodes : 1.onPreExecute() 2.doInBackground(Params…) 3.onProgressUpdate() 4.onPostExecute(Result) 4 Saber LAJILI
  • 5. Principe d’exécution 1.Uneinstance de task crééestexécutéepar la méthode“execute()” 1.“execute()” fait appelà doInBackground(Params) et onPostExecute(Result) 2.Le paramètre input paramsest passé à doInBackground(Params…) et à onPostExecute(Result) 3.doInBackground(Params…) contient le code à exécuter dans le nouveau thread 4.onPostExecute(Result) se synchronise avec l’activité principale et le permet de se modifier 5Saber LAJILI
  • 7. Service Un service est un composant qui s'exécute en arrière-plan, sans IHM Un service n'a pas de durée définie la fin d’une activité n’entraine pas sa terminaison Nécessaire pour les opérations longues et répétitives (Exp: les téléchargements sur Internet) Un service s'exécute par défaut dans le processus principal de l'application. Possible de l’exécuter dans un nouveau thread 7 Saber LAJILI
  • 9. Servicecycle de vie Types de services : Startedservice Boundedservice 9Saber LAJILI
  • 10. ServiceCréation Démarrage et arrêt d’un service10 Saber LAJILI
  • 11. StartedServicecréation et exécution Démo: 1. Créer une nouvelle classe qui étend la classe « Service » 2. Redéfinir ses méthodes 3. Déclarer ce service comme composant dans le fichier manifest.xml 4. Appeler/arrêter ce service par startService() et stopService(). 11 Saber LAJILI
  • 13. BoundedService Un boundservice (service connecté) est un serveur dans une interface client-serveur Permet aux composants (tels que les activités, content Provider et service) de se lier au service, la liaison à un service, par la méthode onBind() Plusieurs clients peuvent se connecter au service à la fois ne s'exécute pas dans le fond indéfiniment Lorsque le dernier client se déconnecte du service, le système détruit le service13 Saber LAJILI
  • 14. Techniques de définition d’interface de programmation Étendre la classe Binder Utiliser un Messenger Utiliser AIDL (Android Interface DefinitionLanguage) 14Saber LAJILI
  • 15. Démo On se propose de réaliser un serveur de temps. Chaque fois que le client demande la date et l’heure, le serveur lui répond Démarche: Réaliser une activité qui demande le temps au près de serveur Interface de programmation: Binder 15Saber LAJILI
  • 16. Démo Côté service : Créer un service dans votre application en héritant de la classe « Service » Créer la classe "LocalBinder" dans votre service et étendre la classe "Binder". Dans cette classe implémenter la méthode « onBind() » du service ensuite retounerl’instance de la classe "LocalBinder" 16 Saber LAJILI
  • 17. Démo •Côté client « activity» : •Créer le composant "Client" de type activité et créer une instance de l’interface "ServiceConnection". •Implémenter les deux méthodes de cette interface onServiceConnected() et onServiceDisconnected(). •Dans la méthode onServiceConnected, vous allez avoir une instance de IBinder, ainsi forcez le comme type (castit) classe LocalBinderdéjà créé dans le service. •Implémenter la méthode onStart() et connecter au service en utilisant la méthode bindService() •Implémenter la méthode onStop() et déconnecter de service en utilisant la méthode unbindService() 17 Saber LAJILI