Module de Programmation Android (LP PRISM AirFrance)

TD8 - Widgets

Les objectifs de ce TD sont : Pour cela, nous allons créer un widget affichant sur le bureau nos score et niveau actuels à notre jeu préféré : Click the Buttonᵀᴹ. Nous allons également pouvoir les sauvegarder d'une session à l'autre.

Mise en place

Implanter une version très simple de Click the Buttonᵀᴹ, dans une application avec une seule activité (sans fragments). Pour gagner du temps, vous pouvez aussi utiliser cette version du jeu.

Notre premier widget

Nous allons associer un widget à cette application, et décrire son interface. Observer les modifications opérées et les fichiers créés par Android Studio : Modifier l'interface du widget, de manière à avoir quatre zones de texte affichant comme d'habitude :
   Score : 0
   Niveau : 1

Mise à jour du widget

Pour l'instant, lorsqu'on joue à Click the Buttonᵀᴹ, le widget n'est pas modifié, ce qui ne permet pas de connaître notre score.

Diffusion d'une intention

Réception d'une intention

Dans la classe TD8AppWidget, surcharger la méthode onReceive afin de : Lorsque c'est le cas : Tester.

Remarque : plus généralement, la diffusion d'intentions est un bon moyen de communiquer entre applications : il suffit pour cela que la classe concernée de l'application réceptrice hérite de BroadcastReceiver et surcharge la méthode onReceive.

Sauvegarde du score

Quitter l'application, et la rouvrir. Non seulement on a encore perdu notre score, mais l'affichage du widget n'est plus cohérent (jusqu'à ce qu'on clique à nouveau sur le bouton). Il serait peut-être temps qu'on puisse conserver nos scores d'une fois sur l'autre...!

On veut conserver le score et le niveau, c'est-à-dire une association clé/valeur de petite taille. Le mieux pour cela est d'utiliser les préférences partagées, qui nous ont déjà servi au TD précédent à sauvegarder les préférences d'une application.

Sauvegarde lors d'une modification

Lorsque le score et le niveau sont mis à jour :

Chargement du score et du niveau au lancement de l'application

À vous de jouer

  1. Arrêter et relancer l'émulateur (ou éteindre et allumer la tablette). Que se passe-t-il au niveau du widget ? Faites en sorte qu'il retrouve les bonnes valeurs au lancement de l'application.
  2. Surcharger la méthode onUpdate pour que l'application se lance lorsqu'on clique sur le widget.

Pour aller plus loin

Les widgets offrent d'autres possibilités, vous pouvez par exemple : Concernant la persistence de données plus conséquentes que quelques clés/valeurs, on peut :
Retour à la page du cours