2013-04-23 10 views
5

Ich habe eine Windows 8 Store-App (XAML/C#) geschrieben, die ich auf einer Microsoft-Oberfläche ausgeführt habe. Die App ist im Grunde eine Dateneingabeanwendung, die keine Speicherschaltflächen hat. Das Speichern wird automatisch ausgeführt, wenn zwischen den Seiten gesprungen wird oder wenn die Anwendung angehalten wird.Daten speichern, wenn Windows 8 Store App geschlossen wird

Ein Senario, das ich nicht zu fangen scheint, ist jedoch, wenn der Benutzer die Anwendung schließt (wenn die Benutzer von oben nach unten wischen).

Also im Moment habe ich zu App.Current.Suspending abonnieren und hier speichern rufen:

App.Current.Suspending += Current_Suspending;     

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

ich auch die Savestate-Methode außer Kraft setzen und rufen Speichern hier:

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

Aber niether davon Methoden werden aufgerufen, wenn die Anwendung geschlossen wird.

Kennt jemand ein Ereignis, das ausgelöst wird, wenn die App geschlossen wird?

Dank

+0

Ihre Verwendung des Wortes „geschlossen“, wenn Ihr über die Anwendung sprechen, ist ein wenig verwirrend aufgehängt ist. Können Sie feststellen, ob das Suspending-Ereignis tatsächlich eintritt, wenn nicht, dann binden Sie das Ereignis nicht korrekt ein. Scheint, als ob dieser Artikel Ihnen helfen könnte, dies auf die richtige Weise zu tun: http://msdn.microsoft.com/en-us/library/windows/apps/hh986968.aspx –

+1

Das aussetzende Ereignis wird ausgelöst, wenn die App angehalten wird, aber wenn sie geschlossen wird es tut es nicht. Wenn ich "Geschlossen" sage, bedeutet dies, dass der Benutzer den Bildschirm von oben nach unten wischt (oder Alt-F4 drückt). – Sun

+0

Ihr Suspendierungsereignis tritt nur auf, wenn die Anwendung nicht geschlossen ist. Sie müssen mit der Anwendung umgehen, die sich tatsächlich dauerhaft schließt, indem Sie das Ereignis behandeln, das beim Schließen der Anwendung auftritt. –

Antwort

6

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

Am unteren es folgenden Hinweis enthält:

Ein Hinweis zu Visual Studio Debuggen verwenden: Visual Studio verhindert, dass Windows-eine App zur Aussetzung, die an den Debugger angeschlossen ist . Auf diese Weise kann der Benutzer die Visual Studio-Debug-Benutzeroberfläche anzeigen, während die App ausgeführt wird. Wenn Sie eine App debuggen, können Sie ihr ein Suspend-Ereignis mit Visual Studio senden. Stellen Sie sicher, dass die Symbolleiste Debugposition angezeigt wird, und klicken Sie dann auf das Symbol Unterbrechen.

2

Ich hasse es, auf die Dokumentation zu einem Windows Store Application Lifecycle zu verweisen, aber die Dokumentation ist ziemlich klar. Es gibt kein spezielles Ereignis, das beim Schließen der Anwendung durch Drücken von ALT-F4 behandelt wird. Windows Store-Anwendungen sollen nur angehalten oder einfach nicht ausgeführt werden. Dies bedeutet, dass Sie die Daten des Benutzers so oft speichern und/oder eine Möglichkeit zum Speichern solcher Daten bereitstellen sollten.

Es gibt kein spezielles Ereignis, das anzeigt, dass der Benutzer eine App geschlossen hat. Nachdem eine App vom Benutzer geschlossen wurde, wird sie angehalten und wird beendet, wobei der NotRunning-Status innerhalb von ca. 10 Sekunden erreicht wird. Wenn eine App einen Ereignishandler für das Suspending | registriert hat suspending Ereignis wird es aufgerufen, wenn die App ausgesetzt ist. Sie können dieses Event-Handler verwenden, um relevante Anwendungs- und Benutzerdaten im persistenten Speicher zu speichern.

Sie sollten entscheiden, wie sich Ihre App verhält, wenn sie aktiviert wird, nachdem sie vom Benutzer geschlossen wurde. Es kann für Sie keinen Unterschied machen, ob die App von Windows oder vom Benutzer beendet wurde. Wenn Ihre App etwas anderes tun muss, wenn sie vom Benutzer geschlossen wird, als wenn sie von Windows geschlossen wird, kann der Aktivierungsereignishandler feststellen, ob die App vom Benutzer oder von Windows beendet wurde. Weitere Informationen finden Sie in den Beschreibungen der Status ClosedByUser und Terminated in der Dokumentation für die ApplicationExecutionState-Enumeration .

Apps sollten sich nicht programmatisch schließen, es sei denn, absolut erforderlich. Wenn eine App beispielsweise einen Speicherverlust feststellt, kann sie selbst schließen, um die Sicherheit der persönlichen Daten des Benutzers zu gewährleisten. Wenn Sie eine App programmgesteuert mit einer schließen, wird dies von Windows als App-Absturz behandelt.

Source

Verwandte Themen