Ciclo di vita
Un’applicazione Windows 8 Metro Style ha il seguente ciclo di vita:
Quando viene attivata, in generale l’applicazione esegue il metodo OnLaunched(LaunchActivatedEventArgs args), ma è importante sapere che vi sono altri metodi che vengono chiamati nel caso in cui, ad esempio, l’applicazione viene lanciata per aprire un file (come avviene nel caso in cui è stata associata una estensione di file alla nostra applicazione e un file viene aperto). Per gestire questi casi è possibile fare l’override del metodo OnActivated( IActivatedEventArgs args ) o di altri metodi più specifici quali, ad esempio, OnFileActivated, OnSearchActivated, o OnFileOpenPickerActivated. Per maggiori informazioni su veda su MSDN: OnActivated method.
Quando l’applicazione viene sospesa viene generato l’evento (di tipo SuspendingEventHandler) Suspending e allo stesso modo, quando l’applicazione viene riattivata dallo stato di sospensione, viene generato l’evento (di tipo EventHandler<object>) Resuming.
Viceversa, quando l’applicazione viene terminata, non viene generato alcun evento ne eseguito alcun metodo (di cui si possa fare l’override) quindi non si ha alcun controllo ne possibilità di gestire quest’ultimo cambio di stato. D’altra parte un’applicazione prima di essere terminata deve necessariamente passare per lo stato di sospensione, quindi è lì che dobbiamo preventivamente intervenire salvando in ogni caso lo stato dell’applicazione.
E’ importante ricordare che nella gestione dell’evento Suspending la nostra App ha solo 5 secondi a disposizione per poter fare quel che deve fare, dopodiché il sistema operativo la elimina brutalmente.
E questo accade anche durante il debugging!
Fare il debugging degli eventi Suspend e Resume
Per poter debuggare la nostra App, evitando la deadline dei 5 secondi, è necessario evitare di sospendere l’applicazione come utente, utilizzando piuttosto gli appositi comandi forniti da Visual Studio 11.
Per far ciò, basta andare su View | Toolbars, attivare Debug Location
e utilizzare i relativi bottoni per sospendere e riattivare l’applicazione
That’s all folks, happy coding!