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 :
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].
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.