5 votes

Sauvegarde des données lors de la fermeture de l'application Windows 8 Store

J'ai écrit une application Windows 8 store (XAML/C#) que j'ai fait tourner sur une surface Microsoft. L'application est essentiellement une application de saisie de données qui n'a pas de boutons de sauvegarde. La sauvegarde est effectuée automatiquement lors du passage d'une page à l'autre ou lorsque l'application est suspendue.

Cependant, il y a un scénario que je n'arrive pas à saisir, c'est lorsque l'utilisateur ferme l'application (lorsqu'il glisse du haut vers le bas de l'écran).

Donc, pour le moment, je m'abonne à App.Current.Suspending et j'appelle save ici :

App.Current.Suspending += Current_Suspending;                  

void Current_Suspending(object sender, Windows.ApplicationModel.SuspendingEventArgs e)
{
    Save();
}

Je surcharge également la méthode SaveState et appelle Save ici :

protected override void SaveState(Dictionary<string, object> pageState)
{
    Save();
    base.SaveState(pageState);
}

Mais aucune de ces méthodes n'est appelée lorsque l'application est fermée.

Quelqu'un connaît-il un événement qui est déclenché lorsque l'application se ferme ?

Gracias

6voto

ChristiaanV Points 3335

http://msdn.microsoft.com/en-US/library/Windows/apps/xaml/hh465115.aspx

En bas, il contient la note suivante :

Une note sur le débogage avec Visual Studio : Visual Studio empêche Windows de suspendre une application qui est attachée au débogueur. Ceci afin de permettre à l'utilisateur d'afficher l'interface de débogage de Visual Studio pendant que l'application est en cours d'exécution. Lorsque vous déboguez une application, vous pouvez lui envoyer un événement de suspension en utilisant Visual Studio. Assurez-vous que la barre d'outils Debug Location est affichée, puis cliquez sur l'icône Suspend.

2voto

Ramhound Points 2224

Je déteste pointer simplement vers la documentation sur le cycle de vie d'une application Windows Store mais la documentation est assez claire. Il n'y a pas d'événement spécial qui gère la fermeture de l'application en appuyant sur ALT-F4. Les applications Windows Store sont censées être seulement suspendues ou simplement non exécutées. Cela signifie que vous devez gérer la sauvegarde des données de l'utilisateur de temps en temps et/ou offrir un moyen de sauvegarder ces données.

Il n'y a pas d'événement spécial pour indiquer que l'utilisateur a fermé une application. Une fois qu'une application a été fermée par l'utilisateur, elle est suspendue et terminée. suspendue et terminée, et passe à l'état NotRunning dans un délai d'environ 10 secondes. Si une application a enregistré un gestionnaire d'événement pour l'événement Suspending | suspending, il est appelé lorsque l'application est fermée. ce dernier est appelé lorsque l'application est suspendue. Vous pouvez utiliser ce gestionnaire d'événement pour sauvegarder les données pertinentes de l'application et de l'utilisateur dans un persistante.

Vous devez décider comment votre application se comporte lorsqu'elle est activée après avoir été fermée par l'utilisateur. [ ] a été fermée par Windows ou par l'utilisateur. Si votre application doit faire quelque chose de différent lorsqu'elle est fermée par l'utilisateur et lorsqu'elle est par Windows, le gestionnaire de l'événement d'activation peut déterminer si l'application a été arrêtée par l'utilisateur ou par Windows. Voir les descriptions des états ClosedByUser et Terminated dans les docs de l'application ApplicationExecutionState.

Les applications ne devraient pas se fermer toutes seules p absolument nécessaire. Par exemple, si une application détecte une fuite de mémoire, elle peut se fermer pour garantir la sécurité. pour garantir la sécurité des données personnelles de l'utilisateur. Lorsque vous fermez une application de manière programmatique, Windows traite cette fermeture comme un crash de l'application.

Source :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X