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
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