Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

4 asynch task_services_thread

Android, AsynchTask , service

  • Login to see the comments

  • Be the first to like this

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

×