Lorsque l’utilisateur va basculer d’une application à une autre, l’application passe donc en arrière plan et passe dans un état d’attente et le système peut décider de la terminer si la mémoire du Device se réduit. Avant ça, si l’utilisateur revient sur votre application, il doit revenir sur la bonne page et s’il avait saisi des données faire qu’elle y soit toujours. Si vous ne prévoyez pas ce scénario, l’application revient à son état initiale et ça aura pour but de faire bouillir votre utilisateur. Pour garantir une bonne expérience à l’utilisateur, il va être necessaire d’ajouter quelques bout de code pour gérer ce cycle de vie.
Quel code ajouter à votre appli :
Revenir sur la même page
Mémorisation dans l’event OnSuspending
On va ici mémoriser la page qui était affichée. Entre le deferral qui permet d’indiquer au système que vous utilisez par exemple du code async et que vous avez besoin d’un peu de temps pour finaliser (environ 5 secondes max)
{
var deferral = e.SuspendingOperation.GetDeferral();
//Mémo de la page actuelle
Frame frame = Windows.Current.Content as Frame;
ApplicationData.Current.LocalSettings.Values["NavigationState"] = frame.GetNavigationState();
deferral.Complete();
}
Retour sur la page dans l’event Onlaunched
On insérera ces lignes dans l’évènement OnLaunched de l’App.xaml.cs
{
//.....
if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
{
//Si y'a une page de mémorisée
if (ApplicationData.Current.LocalSettings.Values.ContainsKey("NavigationState"))
{
rootFrame.SetNavigationState((string)ApplicationData.Current.LocalSettings.Values["NavigationState"]);
}
}
// Placez le frame dans la fenêtre active
Window.Current.Content = rootFrame;
}
Voyons maintenant comment mémoriser les données : Restituer les données après une terminaison
Une réflexion sur « Restituer la navigation après une terminaison »