AsynchTask, Service, Thread 
Version Janvier 2014 
1Saber LAJILI
AsynTask 
AsyncTask? AsyncTaskestuneclasseabstraitegénérique 
Nécessairepour optimiserl’exécutiondes opérationslonguesen...
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 AsynchTaskuses 3 types <Params, Progress, Result> 
1.Params–the input. what you ...
Principe d’exécution 
1.Uneinstance de task crééestexécutéepar la méthode“execute()” 
1.“execute()” fait appelà doInBackgr...
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 f...
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...
StartedServiceDémo12 
Saber LAJILI
BoundedService 
Un boundservice (service connecté) est un serveur dans une interface client-serveur 
Permet aux composan...
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 ...
Démo 
Côté service : 
Créer un service dans votre application en héritant de la classe « Service » 
Créer la classe "Loc...
Démo 
•Côté client « activity» : 
•Créer le composant "Client" de type activité et créer une instance de l’interface "Ser...
Démo18 
Saber LAJILI
Prochain SlideShare
Chargement dans…5
×

4 asynch task_services_thread

957 vues

Publié le

Android, AsynchTask , service

Publié dans : Logiciels
3 commentaires
0 j’aime
Statistiques
Remarques
  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
957
Sur SlideShare
0
Issues des intégrations
0
Intégrations
6
Actions
Partages
0
Téléchargements
1
Commentaires
3
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

4 asynch task_services_thread

  1. 1. AsynchTask, Service, Thread Version Janvier 2014 1Saber LAJILI
  2. 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. 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. 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. 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
  6. 6. Démo ProgressDialogProgressBar 6 Saber LAJILI
  7. 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
  8. 8. 8 Saber LAJILI
  9. 9. Servicecycle de vie Types de services : Startedservice Boundedservice 9Saber LAJILI
  10. 10. ServiceCréation Démarrage et arrêt d’un service10 Saber LAJILI
  11. 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
  12. 12. StartedServiceDémo12 Saber LAJILI
  13. 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. 14. Techniques de définition d’interface de programmation Étendre la classe Binder Utiliser un Messenger Utiliser AIDL (Android Interface DefinitionLanguage) 14Saber LAJILI
  15. 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. 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. 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
  18. 18. Démo18 Saber LAJILI

×