4. Introduction
•Avant : l’utilisateur ouvre, ferme, … gère
•Maintenant : le système gère !
•METRO = full screen donc une app à la fois
(valable uniqument pour les applis METRO et non desktop)
5. Etats d’une app METRO
•RUNNING
App au premier plan
SplashScreen compris. Si ce screen prend +15sec, mise en suspension de l’app
•SUSPENDED
Quand l’user retourne sur le StartScreen METRO
L’app a 5sec pour sauver les données
Sauvegarde l’etat de l’app mais la met de côté en attendant le retour éventuel sur l’app
•TERMINATED
Si le device n’a plus assez de mémoire pour maintenir toutes les app en suspended
PAS DE NOTIFICATION DU SYSTEME QUAND L’APP PASSE EN TERMINATED !!!
6. Scénario
• L’utilisateur démarre son système et lance l’application Metro
Finance. Celle-ci est dans l’état Running
• L’utilisateur retourne ensuite sur le start screen et lance l’application
Meteo. Cette dernière occupe désormais le premier plan. Elle est
dans l’état Running tandis que l’application Finance passe en
Suspended; son exécution est arrêtée.
• L’utilisateur retourne sur l’application Finance. Son état est
immédiatement restauré car le système le conservait en mémoire.
L’application Finance repasse alors dans l’état Running.
• L’utilisateur lance de multiples applications. Le système manque de
mémoire et passe l’application Finance dans l’état Terminated.
Celle-ci n’est plus conservée en mémoire. Son exécution est arrêtée.
7. Let’s code it ! (App.xaml)
OnLaunched utilise l’objet LaunchActivatedEventsArgs :
Running
Terminated
Mais il existe aussi :
ClosedByUser,
NotRunning,
Suspended
Kind
8. Kind in example
• Kind définit la facon dont l’app a été activée :
• Où l’application se serait lancée depuis une recherche
9. La suspension et la reprise
La classe App possède deux évènements :
•Suspending (lancé avant que l’app soit suspendue)
•Resuming (lancé à la reprise de l’app – pour RAFRAICHIR les données si besoin)
Le système restaure les données automatiquement !!!
10. Car un exemple vaut mieux qu’un long discours
Une app affiche une liste d’éléments dans une ListBox. L’élé
séléctionné doit être sauvé.
Côté XAML, on crée la ListBox dans un GridLayout avec des Item
Côté C# ()MainPage.xaml.cs :
11. Car un exemple vaut mieux qu’un long discours
Dans l’app.xaml : la variable qui sauve l’index de l’élé sauvé :
(Dans app.xaml.cs, juste après la décla de la classe « App » )
12. Car un exemple vaut mieux qu’un long discours
Maintenant on s’occupe de la sauvegarde de cette valeur pour la
restaurer plus tard si l’app passe en TERMINATED :
13. Car un exemple vaut mieux qu’un long discours
Maintenant, on fait en sorte que l’app recharge les données une
fois qu’on repasse à l’état RUNNING ! Donc dans l’OnLaunched
on ajoute :
Si on sort de l’état TERMINATED (et si la valeur est bien sauvée), on met en
couleur l’item possédant l’id d’item sauvé !
14. Car un exemple vaut mieux qu’un long discours
Dernière étape : la sauvegarde de l’itemId !
On la récupère lors de la navigation vers « BlankPage », au sein
de la méthode « OnNavigateTo » (MainPage.xaml.cs) :