2013-03-28 8 views
5

Ich habe ein kleines Problem mit dem Speichern meines Status zu lokalen Einstellungen. Alles ist in Ordnung außer der Situation, wenn jemand meine Anwendung mit alt + f4 schließt und öffnen Sie es vor Ablauf von 10 Sekunden (nach 10 Sekunden Anwendung ist im Status auszusetzen und Daten gespeichert werden). (Technologie xaml/C#)Wie kann ich meinen Status in der Windows Store App speichern?

Ich speichere meine Daten in Ereignis OnSuspending.

ich meine Daten in Event OnLaunched wie folgt laden:

if (args.PreviousExecutionState == ApplicationExecutionState.Terminated || 
args.PreviousExecutionState == ApplicationExecutionState.ClosedByUser) 
{ 
    // save data 
} 

Wie mit dieser Situation umgehen? Ich weiß, dass ich meinen Zustand jedes Mal speichern kann, wenn es geändert wird, aber ich denke, dass es in meiner Anwendung keine gute Idee ist. Danke für Hilfe!

Antwort

2

Wenn Sie Ihre Anwendung schließen und starten, bevor 10 Sekunden verstrichen sind, wird eine andere Instanz erstellt und die vorherige nicht ausgeführt OnSuspending Ereignis (es ist seltsam, weil dies bedeutet, dass asynchrone Operationen wie dieses Ereignis enden oder nie ohne starten können warnt uns). Ich denke, das ist nervig, aber warum sollte Ihr Benutzer so etwas tun? Meistens "startet" der Benutzer Ihre Anwendung neu, weil sie abgestürzt ist oder er feststeckt und nicht zur Hauptseite zurückkehren kann. Sie sollten versuchen, diese Szenarien zu verhindern, und solche Gedanken werden selten passieren.

Dies kann jedoch auch passieren, weil der Benutzer etwas vergessen hat und die App erneut starten möchte. Um verlorene Benutzerdaten zu vermeiden, speichere ich die wichtigsten Daten, wenn ich die Möglichkeit habe und speichere den Rest nur mit der Methode OnSuspending. Sie müssen darüber nachdenken, welche Daten Ihre Benutzer verärgern, wenn sie verloren gehen.

Ich denke, Microsoft sollte einen besseren Weg zum Speichern des Anwendungsstatus erhalten. Ich habe viel über dieses Problem gesucht und keine Erklärung gefunden, deshalb werde ich auch weiterhin tun, was ich oben gesagt habe. Ich hoffe, dass diese Frage, die Sie gestellt haben, mir helfen kann, und dies zu klären, meiner Meinung nach, ein seltsamer Fall.

0
onLaunched : 
    CoreWindow.GetForCurrentThread().Activated += App_Activated; 
and event: 
void App_Activated(CoreWindow sender, WindowActivatedEventArgs args) 
     { 



       if (args.WindowActivationState == CoreWindowActivationState.Deactivated) 
       { 
       //save Data 
       } 
     } 

Wenn Sie Daten laden, entfernen: if (args.PreviousExecutionState == ApplicationExecutionState.Terminated || args.PreviousExecutionState == ApplicationExecutionState.Closed ByUser) `. Es funktioniert!

+0

sollten Sie erklären, was dies tut und den Code formatieren – letiagoalves

Verwandte Themen