SlideShare uma empresa Scribd logo
1 de 23
AsynchTask, Service,
Thread
Version Janvier 2014
1Saber LAJILI
problématique
• L’activityManager impose un delai aux UIThread
(5s)
• Les traitements long (io, calcul, connexion ..)
doivent être exécuté dans des threads séparés
• Seul le UIThread (MainThread) est capable de
mettre à jour l’interface, aucun autre thread n’en a
le droit
Thread
• Thread dit aussi processus léger, fil d’exécution 
Processus lourd
• C’est un fil d’exécution d’une suite d’instruction
d’un processus lourd.
• les threads d'un même processus se partagent sa
mémoire virtuelle. Par contre, tous possèdent leur
propre pile d’exécution.
Avantages:
- Rendre l'utilisation d'une application plus fluide,
car il n'y a plus de blocage durant les phases de
traitements intenses.
Thread
Création de thread
1. Package : java.lang.Object et java.lang.Thread
2. Classe hérite de la classe Thread ou implémente
l’interface Runnable
3. Définir la méthode run()
4. Appeler la méthode start() depuis l’objet de la classe
– commutation de contexte (context switch) entre
deux threads est moins coûteuse que la commutation de
contexte entre deux processus.
–Conseiilé à l’utiliser pour la gestion de l’interface exp:
traitement de texte, …
Exemple
Eemple : 2venement de téléchargement d’une image par
un thread :
construct a new Thread and pass aRunnable to the constructor
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
Bitmap b =
loadImageFromNetwork("http://example.com/image.png")
;
mImageView.setImageBitmap(b);
}
}).start();
}
AsynTask
 AsyncTask?
AsyncTask est une classe abstraite générique
 Nécessaire pour optimiser l’exécution des opérations
longues en background
 Retourne son résultat dans UI thread (actvité courante)
sans être obligé de manipuler les threads
 L’application principale se lance dans un seul thread
 En cas d’accès à un serveur en réseau (Exp:
authentification) , l’interface user reste en attente sans
réponse !!! En cas de crash l’application en entier se
crash!!!
6Saber 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 principale
7Saber LAJILI
Définition
1. Etendre la classe générique AsynchTask uses 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)
8Saber LAJILI
Principe d’exécution
1. Une instance de task créé est exécutée par la méthode
“execute()”
1. “execute()” fait appel à doInBackground (Params) et
onPostExecute(Result)
2. Le paramètre input params est 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
10Saber LAJILI
Démo
ProgressDialogProgressBar
11Saber 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
12Saber LAJILI
13Saber LAJILI
Service
cycle de vie
Types de services :
 Started service
 Bounded service
14Saber LAJILI
Service
Création
Démarrage et arrêt d’un service
15Saber LAJILI
Started Service
cré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().
16Saber LAJILI
Started Service
Démo
17Saber LAJILI
Bounded Service
 Un bound service (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 service
18Saber LAJILI
Techniques de définition d’interface de
programmation
 Étendre la classe Binder
 Utiliser un Messenger
 Utiliser AIDL (Android Interface Definition
Language)
19Saber 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
20Saber 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 retouner l’instance de
la classe "LocalBinder"
21Saber 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 (cast
it) classe LocalBinder dé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()
22Saber LAJILI
Démo
23Saber LAJILI

Mais conteúdo relacionado

Mais procurados

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
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework springAntoine Rey
 
Le futur de AngularJS (2.0)
Le futur de AngularJS (2.0)Le futur de AngularJS (2.0)
Le futur de AngularJS (2.0)Clément Dubois
 
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
 
Workshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring IntegrationWorkshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring IntegrationAntoine 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
 
Gatekeeper par Guillaume Faure
Gatekeeper par Guillaume FaureGatekeeper par Guillaume Faure
Gatekeeper par Guillaume FaureCocoaHeads France
 
comprendre angularJS en 10 minutes
comprendre angularJS en 10 minutescomprendre angularJS en 10 minutes
comprendre angularJS en 10 minutesDavid Bo
 
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
 
Hello AngularJS - Back to the future
Hello AngularJS - Back to the futureHello AngularJS - Back to the future
Hello AngularJS - Back to the futureOuadie LAHDIOUI
 

Mais procurados (20)

Rapport tp1 j2ee
Rapport tp1 j2eeRapport tp1 j2ee
Rapport tp1 j2ee
 
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
 
Angular 2
Angular 2Angular 2
Angular 2
 
ParisJUG Spring Boot
ParisJUG Spring BootParisJUG Spring Boot
ParisJUG Spring Boot
 
iTunes Stats
iTunes StatsiTunes Stats
iTunes Stats
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework spring
 
Le futur de AngularJS (2.0)
Le futur de AngularJS (2.0)Le futur de AngularJS (2.0)
Le futur de AngularJS (2.0)
 
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
 
Spring 3.0
Spring 3.0Spring 3.0
Spring 3.0
 
Workshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring IntegrationWorkshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring Integration
 
Intro à angular
Intro à angularIntro à angular
Intro à angular
 
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
 
Présentation Angular 2
Présentation Angular 2 Présentation Angular 2
Présentation Angular 2
 
Multi-Threading Et Cocoa
Multi-Threading Et CocoaMulti-Threading Et Cocoa
Multi-Threading Et Cocoa
 
Gatekeeper par Guillaume Faure
Gatekeeper par Guillaume FaureGatekeeper par Guillaume Faure
Gatekeeper par Guillaume Faure
 
comprendre angularJS en 10 minutes
comprendre angularJS en 10 minutescomprendre angularJS en 10 minutes
comprendre angularJS en 10 minutes
 
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
 
Hello AngularJS - Back to the future
Hello AngularJS - Back to the futureHello AngularJS - Back to the future
Hello AngularJS - Back to the future
 
Netbeans Install
Netbeans InstallNetbeans Install
Netbeans Install
 
Support cours angular
Support cours angularSupport cours angular
Support cours angular
 

Semelhante a 4 asynch task_services_thread

AOP.pptx
AOP.pptxAOP.pptx
AOP.pptxManalAg
 
Tp1 design patternappliques
Tp1 design patternappliquesTp1 design patternappliques
Tp1 design patternappliquesMariem ZAOUALI
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Microsoft
 
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
 
Implémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En JavaImplémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En JavaRached Krim
 
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !vincent aniort
 
Cocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaHeads France
 
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOlivier DASINI
 

Semelhante a 4 asynch task_services_thread (20)

Formation Google App Engine
Formation Google App EngineFormation Google App Engine
Formation Google App Engine
 
Multithreading
MultithreadingMultithreading
Multithreading
 
Android
AndroidAndroid
Android
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
threads.pdf
threads.pdfthreads.pdf
threads.pdf
 
Cours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweightCours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweight
 
AOP.pptx
AOP.pptxAOP.pptx
AOP.pptx
 
Tp1 design patternappliques
Tp1 design patternappliquesTp1 design patternappliques
Tp1 design patternappliques
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5
 
Cours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapterCours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapter
 
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
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
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
 
Implémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En JavaImplémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En Java
 
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
 
Rapport tp2 j2ee
Rapport tp2 j2eeRapport tp2 j2ee
Rapport tp2 j2ee
 
Cocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitaires
 
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
 

Mais 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
 

Mais 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
 

Último

SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSKennel
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...maach1
 
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptCHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptbentaha1011
 
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfActions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfalainfahed961
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).FatimaEzzahra753100
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 

Último (8)

SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
 
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptCHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
 
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfActions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 
Note agro-climatique n°2 - 17 Avril 2024
Note agro-climatique n°2 - 17 Avril 2024Note agro-climatique n°2 - 17 Avril 2024
Note agro-climatique n°2 - 17 Avril 2024
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 

4 asynch task_services_thread

  • 2. problématique • L’activityManager impose un delai aux UIThread (5s) • Les traitements long (io, calcul, connexion ..) doivent être exécuté dans des threads séparés • Seul le UIThread (MainThread) est capable de mettre à jour l’interface, aucun autre thread n’en a le droit
  • 3. Thread • Thread dit aussi processus léger, fil d’exécution  Processus lourd • C’est un fil d’exécution d’une suite d’instruction d’un processus lourd. • les threads d'un même processus se partagent sa mémoire virtuelle. Par contre, tous possèdent leur propre pile d’exécution. Avantages: - Rendre l'utilisation d'une application plus fluide, car il n'y a plus de blocage durant les phases de traitements intenses.
  • 4. Thread Création de thread 1. Package : java.lang.Object et java.lang.Thread 2. Classe hérite de la classe Thread ou implémente l’interface Runnable 3. Définir la méthode run() 4. Appeler la méthode start() depuis l’objet de la classe – commutation de contexte (context switch) entre deux threads est moins coûteuse que la commutation de contexte entre deux processus. –Conseiilé à l’utiliser pour la gestion de l’interface exp: traitement de texte, …
  • 5. Exemple Eemple : 2venement de téléchargement d’une image par un thread : construct a new Thread and pass aRunnable to the constructor public void onClick(View v) { new Thread(new Runnable() { public void run() { Bitmap b = loadImageFromNetwork("http://example.com/image.png") ; mImageView.setImageBitmap(b); } }).start(); }
  • 6. AsynTask  AsyncTask? AsyncTask est une classe abstraite générique  Nécessaire pour optimiser l’exécution des opérations longues en background  Retourne son résultat dans UI thread (actvité courante) sans être obligé de manipuler les threads  L’application principale se lance dans un seul thread  En cas d’accès à un serveur en réseau (Exp: authentification) , l’interface user reste en attente sans réponse !!! En cas de crash l’application en entier se crash!!! 6Saber LAJILI
  • 7. 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 principale 7Saber LAJILI
  • 8. Définition 1. Etendre la classe générique AsynchTask uses 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) 8Saber LAJILI
  • 9.
  • 10. Principe d’exécution 1. Une instance de task créé est exécutée par la méthode “execute()” 1. “execute()” fait appel à doInBackground (Params) et onPostExecute(Result) 2. Le paramètre input params est 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 10Saber LAJILI
  • 12. 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 12Saber LAJILI
  • 14. Service cycle de vie Types de services :  Started service  Bounded service 14Saber LAJILI
  • 15. Service Création Démarrage et arrêt d’un service 15Saber LAJILI
  • 16. Started Service cré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(). 16Saber LAJILI
  • 18. Bounded Service  Un bound service (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 service 18Saber LAJILI
  • 19. Techniques de définition d’interface de programmation  Étendre la classe Binder  Utiliser un Messenger  Utiliser AIDL (Android Interface Definition Language) 19Saber LAJILI
  • 20. 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 20Saber LAJILI
  • 21. 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 retouner l’instance de la classe "LocalBinder" 21Saber LAJILI
  • 22. 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 (cast it) classe LocalBinder dé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() 22Saber LAJILI

Notas do Editor

  1.  1. onPreExecute() – called on the UI thread before the thread starts running. This method is usually used to setup the task, for example by displaying a progress bar.    2. doInBackground(Params…) – this is the method that runs on the background thread. In this method you should put all the code you want the application to perform in background. Referring to our Simple RSS Aplication, you would put here the code that downloads the XML feed and does the parsing. The doInBackground() is called immediately after onPreExecute(). When it finishes, it sends the result to the onPostExecute().    3. onProgressUpdate() - called when you invoke publishProgress() in the doInBackground().    4. onPostExecute(Result) – called on the UI thread after the background thread finishes. It takes as parameter the result received from doInBackground().
  2. Started service : s’exécute dans le processus de l’application Bounded service : s’exécute dans des processus indépendants de celui de l’application
  3. Started service : s’exécute dans le processus de l’application Bounded service : s’exécute dans des processus indépendants de celui de l’application
  4. Started service : s’exécute dans le processus de l’application Bounded service : s’exécute dans des processus indépendants de celui de l’application
  5. Started service : s’exécute dans le processus de l’application Bounded service : s’exécute dans des processus indépendants de celui de l’application
  6. Les composants peuvent envoyer des requêtes, recevoir des réponses, et même effectuer une communication inter-processus (IPC)