VI. AVAT- Exemple 3▲
VI-A. Le projet▲
Nous nous proposons maintenant de montrer qu'il y a une vie en-dehors des tâches asynchrones et qu'on peut même alors, continuer à utiliser le modèle AVAT. C'est un peu baroque mais ça marche.
L'essentiel ayant été dit sur le modèle AVAT, nous commençons une série d'exemples courts et rapidement expliqués. Nous ne détaillons que des concepts que nous n'aurions pas encore vus. Le reste est disponible dans les codes source livrés avec ce document. Nous terminerons par une application plus complexe de client d'un service web de gestion de rendez-vous.
L'application de ce nouvel exemple a l'architecture suivante :
La couche [AVAT] est seule et sans tâches asynchrones.
L'application aura la même vue que dans l'exemple précédent :
A l'exécution, l'action [Action_01] se contentera de renvoyer à la vue les informations que celle-ci lui aura données :
VI-B. Le projet Eclipse▲
Le projet Eclipse de cet exemple est le suivant :
- en [1], le projet [android-ui3] est un projet Maven ayant une dépendance sur le projet [android-avat] ;
- en [2], les sources du projet :
- le package [istia.st.avat-exemples.vues] rassemble les vues du projet, ici une vue ;
- le package [istia.st.avat-exemples.actions] rassemble les actions du projet, ici une action ;
- le package [istia.st.avat-exemples.activity] contient l'activité Android [MainActivity], la fabrique d'objets [Factory] et une classe de configuration [Config].
On notera que l'application n'a pas de tâches.
VI-C. L'action [Action_01]▲
L'action [Action_01] se contente de renvoyer à la vue les informations que celles-ci lui a transmises. Son code est le suivant :
- ligne 11 : la méthode [doWork] reçoit quatre paramètres de la vue ;
- lignes 15 : elle commence par s'assoupir 1 seconde pour simuler un travail ;
- ligne 17 : ensuite elle renvoie à son boss (la vue) les paramètres qu'elle a reçues dans le même ordre ;
- ligne 20 : s'il se produit une exception, celle-ci est également envoyée au boss ;
- ligne 23 : l'action signale à son boss qu'elle a terminé son travail ;
- ligne 27 : l'action en tant que [IBoss] doit implémenter la méthode [notifyEndOfTasks]. Ici l'action n'ayant pas de tâches, cette méthode ne sera jamais appelée.
VI-D. La vue [Vue_01]▲
La vue [Vue_01] est la suivante :
- lignes 20-21 : l'action [Action_01] est appelée avec les paramètres [ urlServiceRest,nbAleas,a,b, sleepTime ] ;
- ligne 34 : ces paramètres vont lui être renvoyées dans une notification [WORK_INFO] ;
- lignes 45-48 : ils sont alors placés dans la liste des réponses.