2013-03-28 18 views
5

Ho un piccolo problema con il salvataggio del mio stato in impostazioni locali. Tutto è ok tranne la situazione in cui qualcuno chiude la mia applicazione utilizzando alt + f4 e lo apre prima che siano trascorsi 10 secondi (dopo che l'applicazione è stata sospesa per 10 secondi e i dati sono stati salvati). (Tecnologia xaml/C#)Come salvare il mio stato in Windows Store App?

Ho salvato i dati nell'evento OnSuspending.

io carico i miei dati nel caso in OnLaunched come questo:

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

Come gestire questa situazione? So che posso salvare il mio stato ogni volta che viene modificato, ma penso che non sia una buona idea nella mia applicazione. Grazie per l'aiuto!

risposta

2

Quando si chiude e lancia l'applicazione prima di 10 secondi trascorsi un'altra istanza viene creato e quello precedente non viene eseguito OnSuspending evento (è strano, perché significa che le operazioni asincrone come questo evento può finire o mai avviato senza avvertendoci). Penso che questo sia fastidioso, ma perché il tuo utente farebbe qualcosa del genere? La maggior parte delle volte l'utente "riavvia" l'applicazione perché si è bloccata o è bloccato e non può tornare alla pagina principale. Dovresti cercare di prevenire quegli scenari e tali pensieri succederanno raramente.

Tuttavia, questo può succedere anche perché l'utente ha dimenticato di fare qualcosa e desidera riavviare l'app. Per evitare la perdita di dati utente, salvo i dati più importanti quando ne ho la possibilità, salvo il resto, solo il metodo OnSuspending. Devi pensare a quali dati sconvolgeranno i tuoi utenti quando saranno persi.

Penso che Microsoft dovrebbe ottenere un modo migliore di salvare lo stato dell'applicazione. Ho cercato molto su questo problema e non ho trovato una spiegazione, quindi per ora continuerò a fare quello che ho detto sopra. Spero che questa domanda tu possa aiutare e chiarirmi su questo, a mio avviso, un caso strano.

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



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

Quando si caricano i dati, rimuovere: if (args.PreviousExecutionState == ApplicationExecutionState.Terminated || args.PreviousExecutionState == ApplicationExecutionState.Closed ByUser) `. Funziona!

+0

dovresti spiegare cosa fa e formattare il codice – letiagoalves

Problemi correlati