Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
AsynchTask, Service,
Thread
Version Janvier 2014
1Saber LAJILI
problématique
• L’activityManager impose un delai aux UIThread
(5s)
• Les traitements long (io, calcul, connexion ..)
doiv...
Thread
• Thread dit aussi processus léger, fil d’exécution 
Processus lourd
• C’est un fil d’exécution d’une suite d’inst...
Thread
Création de thread
1. Package : java.lang.Object et java.lang.Thread
2. Classe hérite de la classe Thread ou implém...
Exemple
Eemple : 2venement de téléchargement d’une image par
un thread :
construct a new Thread and pass aRunnable to the ...
AsynTask
 AsyncTask?
AsyncTask est une classe abstraite générique
 Nécessaire pour optimiser l’exécution des opérations
...
Solution
 Implémenter ce type de traitement dans un
nouveau thread sans manipuler les thread par :
AsynchTask
 Possibili...
Définition
1. Etendre la classe générique AsynchTask uses 3
types <Params, Progress, Result>
1. Params – the input. what y...
Principe d’exécution
1. Une instance de task créé est exécutée par la méthode
“execute()”
1. “execute()” fait appel à doIn...
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 f...
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 ...
Started Service
Démo
17Saber LAJILI
Bounded Service
 Un bound service (service connecté) est un serveur
dans une interface client-serveur
 Permet aux compos...
Techniques de définition d’interface de
programmation
 Étendre la classe Binder
 Utiliser un Messenger
 Utiliser AIDL (...
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...
Démo
Côté service :
Créer un service dans votre application en héritant
de la classe « Service »
Créer la classe "LocalBin...
Démo
• Côté client « activity » :
• Créer le composant "Client" de type activité et créer
une instance de l’interface "Ser...
Démo
23Saber LAJILI
4 asynch task_services_thread
Prochain SlideShare
Chargement dans…5
×

4 asynch task_services_thread

1 011 vues

Publié le

Thread, AsynchTask, Android, service

Publié dans : Ingénierie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

4 asynch task_services_thread

  1. 1. AsynchTask, Service, Thread Version Janvier 2014 1Saber LAJILI
  2. 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. 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. 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. 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. 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. 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. 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. 9. 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
  10. 10. Démo ProgressDialogProgressBar 11Saber LAJILI
  11. 11. 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
  12. 12. 13Saber LAJILI
  13. 13. Service cycle de vie Types de services :  Started service  Bounded service 14Saber LAJILI
  14. 14. Service Création Démarrage et arrêt d’un service 15Saber LAJILI
  15. 15. 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
  16. 16. Started Service Démo 17Saber LAJILI
  17. 17. 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
  18. 18. Techniques de définition d’interface de programmation  Étendre la classe Binder  Utiliser un Messenger  Utiliser AIDL (Android Interface Definition Language) 19Saber LAJILI
  19. 19. 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
  20. 20. 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
  21. 21. 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
  22. 22. Démo 23Saber LAJILI

×