2013-04-23 5 views
5

Ho scritto un'app di Windows 8 store (XAML/C#) su cui sono in esecuzione su una superficie Microsoft. L'app è fondamentalmente un'applicazione di data entry che non ha pulsanti di salvataggio. Il salvataggio viene eseguito automaticamente saltando da una pagina all'altra o quando l'applicazione è sospesa.Salvare i dati quando l'app di Windows 8 Store si chiude

Tuttavia, un senario I non sembra in grado di rilevare quando l'utente chiude l'applicazione (quando gli utenti passano dalla parte superiore a quella inferiore dello schermo).

Quindi al momento mi associo al App.Current.Suspending e chiama Salva qui:

App.Current.Suspending += Current_Suspending;     

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

Ho anche l'override del metodo SaveState e chiamo Salva qui:

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

Ma niether di questi i metodi vengono chiamati quando l'applicazione viene chiusa.

Qualcuno sa di un evento che viene generato quando l'app si chiude?

Grazie

+0

L'utilizzo della parola "chiuso" quando il vostro parlare l'applicazione sospensione è un po 'di confusione. È possibile determinare se l'evento di sospensione si verifica effettivamente, in caso contrario, quindi non si sta collegando all'evento nel modo corretto. Sembra che questo articolo possa aiutarti a farlo nel modo corretto: http://msdn.microsoft.com/en-us/library/windows/apps/hh986968.aspx –

+1

L'evento di sospensione si attiva quando l'app viene sospesa ma quando viene chiusa non è così. Quando dico chiuso, intendo che l'utente sta scorrendo lo schermo dall'alto verso il basso (o premendo Alt-F4) – Sun

+0

L'evento di sospensione si verifica solo quando l'applicazione è sospesa non chiusa. È necessario gestire l'applicazione che si chiude in modo permanente gestendo l'evento che si verifica quando l'applicazione viene chiusa. –

risposta

6

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

Alla parte inferiore che contiene la seguente nota:

Una nota sul debug utilizzando Visual Studio: Visual Studio impedisce a Windows di sospendere un app che è collegato al debugger . Questo per consentire all'utente di visualizzare l'interfaccia utente di debug di Visual Studio mentre l'app è in esecuzione. Quando esegui il debug di un'app, puoi inviare un evento di sospensione utilizzando Visual Studio. Assicurarsi che la barra degli strumenti Posizione debug sia visualizzata, quindi fare clic sull'icona Sospendi.

2

Detesto semplicemente la documentazione su un ciclo di vita di un'applicazione Windows Store ma la documentazione è abbastanza chiara. Non c'è un evento speciale che gestisca quando l'applicazione viene chiusa premendo ALT-F4 Le applicazioni Windows Store possono essere sospese o semplicemente non in esecuzione. Ciò significa che dovresti gestire il salvataggio dei dati dell'utente così spesso e/o offrire un modo per salvare tali dati.

Non c'è un evento speciale per indicare che l'utente ha chiuso un'app. Dopo che un'app è stata chiusa dall'utente, viene sospesa e terminata, entrando nello stato NotRunning entro circa 10 secondi. Se un'app ha registrato un gestore di eventi per la sospensione | sospendendo l'evento , viene chiamato quando l'app è sospesa. È possibile utilizzare questo gestore di eventi per salvare i dati dell'applicazione e dell'utente rilevanti nella memoria persistente .

Dovresti decidere come si comporta la tua app quando viene attivata dopo essere stata chiusa dall'utente. Potrebbe non fare alcuna differenza se l'app è stata terminata da Windows o dall'utente. Se l'app deve eseguire in modo diverso quando viene chiusa dall'utente rispetto a quando è chiusa da Windows, il gestore dell'evento di attivazione può determinare se l'app è stata terminata dall'utente o da Windows se . Vedere le descrizioni degli stati ClosedByUser e Terminated nei documenti per l'enumerazione ApplicationExecutionState .

Le app non devono chiudersi automaticamente a meno che non sia assolutamente necessario . Ad esempio, se un'app rileva una perdita di memoria, può chiudere lo stesso per garantire la sicurezza dei dati personali dell'utente. Quando fai il di chiudere un'app a livello di programmazione, Windows considera questo come un arresto anomalo dell'app.

Source

Problemi correlati