Ciclo di vita di una applicazione windows phone tips & tricks
-
Upload
dan-ardelean -
Category
Technology
-
view
301 -
download
2
Transcript of Ciclo di vita di una applicazione windows phone tips & tricks
Dan [email protected]: sviluppomobile.blogspot.comTwitter: @danardelean
Ciclo di vita di una applicazione Windows Phone: tips & tricks
Agenda
Stack di navigazioneLaunching & ClosingDormant & TombstonedDizionari di statoFast Application ResumeObscured & UnobscuredAsync & await
Le basi• Modello di navigazione Page-Based
• Per implementare questo modello di navigazione ogni applicazione ha uno «Back Stack»• Navigazione verso una nuova pagina la vecchia viene inserita in
Back Stack• Quando viene premuto il tasto Back o chiamato il metodo GoBack
l’applicazione ritorna alla prima pagina dentro Back Stack• Se Back Stack è vuoto quando si naviga indietro l’applicazione
viene chiusa
Stack di navigazione• Possiamo manualmente rimuovere elementi
dallo stack
• Non possiamo manualmente aggiungere elementi
• Le pagine possono essere notificate se vengono rimosse dallo stack
private void PurgeBackStackButton_Click(object sender, RoutedEventArgs e){ while (NavigationService.CanGoBack) NavigationService.RemoveBackEntry();}
protected override void OnRemovedFromJournal(JournalEntryRemovedEventArgs e){ base.OnRemovedFromJournal(e);}
Not running
Running
Launching
Lancio applicazione
Not running
Running
LaunchingClosing
Deactivating
Dormant
ExitApplication_Closing
DeactivateApplication_Deactivated
Dormant
Chiusura & disattivazione
DormantIstanza in memoria
Stato applicazione, data e oggetti non vengono modificati
Deve essere pronta per essere chiusa
Not running
Running
LaunchingClosing
DeactivatingActivating
Dormant
Att
iva
Dorm
an
tTo
mb
ston
ed
Tombstoned
Not running
Running
LaunchingClosing
DeactivatingActivating
Dormant
TombstonedDa Dormant a Tombstone «memory based»
Salva i dizionari di stato e lo stack di navigazione
Bisogna ricaricare i dati
Tombstoned
Not running
Running
LaunchingClosing
DeactivatingActivating
Dormant
Tombstoned o Dormant?
private void Application_Activated(object sender, ActivatedEventArgs e){ if (e.IsApplicationInstancePreserved) { // Dormant } else { // Tombstoned }}
Riattiva l’istanza dormant se l’utente lancia una nuova istanza
Necessario per le applicazioni che fanno tracking della posizione e non solo
Tombstoned
Not running
Running
LaunchingClosing
DeactivatingActivating
Dormant
Fast Application Resume
Dormant/TombstonedDemo
Terminazione normaleUtente MainPagePhone OS Applicazion
eLancio l’applicazione
Costruttore applicazione App()
Application_Launching
Costruttore MainPage
MainPage OnNavigatedTo
Utilizzo applicazione
Back
MainPage OnNavigatingFromMainPage OnNavigatedFrom
Application_Closing
DormantUtente MainPagePhone OS Applicazion
e
Utilizzo applicazione
Start
MainPage OnNavigatingFromMainPage OnNavigatedFrom
Application_DeactivatedBack
Application_Activated
MainPage OnNavigatedTo
Utilizzo applicazione
IsApplicationInstancePreserved==true
Application_Activated
TombstonedUtente MainPagePhone OS Applicazion
eUtilizzo applicazione
Start
MainPage OnNavigatingFromMainPage OnNavigatedFrom
Application_Deactivated
Back
IsApplicationInstancePreserved==false
Processo terminato
Costruttore applicazione App()
Costruttore MainPage
MainPage OnNavigatedTo
Utilizzo applicazione
Application_Activated
TombstonedUtente MainPagePhone OS Applicazion
eUtilizzo applicazioneIn-App
NavigationSecondPage Costruttore
MainPage OnNavigatedFrom
Application_Deactivated
Start
Processo terminato
Costruttore App()
Costruttore MainPage
MainPage OnNavigatedTo
SecondPage
SecondPage OnNavigatedTo
Back
SecondPage Costruttore
SecondPage OnNavigatedToBack
SecondPage OnNavigatedFrom
Stato applicazione• 3 Dizionari
• Pagina:PhoneApplicationPage.State
• Istanza appPhoneApplicationService.Current.State
• ApplicazioneSystem.IO.IsolatedStorage.IsolatedStorageSettings.ApplicationSettings
Sospensione Timers e Thread
Management delle risorseUtente MainPagePhone OS Applicazion
eUtilizzo applicazione
Start
MainPage OnNavigatingFromMainPage OnNavigatedFrom
Application_Deactivated
Rilascio risorse
MediaPlayer.PauseMediaElement.PauseVibrateController.StopPhotocamera.Dispose
Set to Dormant state
Rilascio risorse XNA Audio in pausa
Nessuna notifica dagli sensoriInterrompe le chiamate di reteScollega socketScollega mediaDispose Photocamera
Ripristino Timers e Thread
Management delle risorseUtente MainPagePhone OS Applicazion
eBack
MainPage OnNavigatedTo
Application_Activated
Ripristino risorse
MediaPlayer.PlaySocket.ConnectAsyncnew PhotoCamera
Ripristino risorse XNA Audio in play
Ripristina notifiche dagli sensoriRipristina le chiamate di rete
Socket rimangano scollegatiMediaElement non connessoPhotocamera disposed
Fast Application Resume• Riattiva l’istanza Dormant, se esiste, quando
l’utente lancia nuovamente l’applicazione
• Per abilitare la funzionalità bisogna modificare Properties\WMAppManifest.xml
<Tasks> <DefaultTask Name ="_default" NavigationPage="MainPage.xaml" ActivationPolicy="Resume"></Tasks>
Fast Application ResumeDemo
Obscured & Unobscured• Quando l’interfaccia utente viene oscurata:
notifiche toast, lockscreen, chiamata in arrivo• L’applicazione continua girare in background
• Per far girare l’applicazione dietro Lockscreen
• Per disabilitare il Lockscreen
PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled;
PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
Async e await• Cosa succede quando usiamo async e await
per Application_Closing e Application_Deactivate?
• Meccanismo per applicazioni Windows Storevar deferral = e.SuspendingOperation.GetDeferral();//TODO: Save application state and stop any background activity. await ExecuteAsync(); deferral.Complete();
App Studio is a web-based tool that allows you to enter the world of building Windows Phone apps simply by combining your text and visual content with your own creativity to quickly construct an app you can use and share in four easy steps:
Windows Phone App Studio
1 2 3 4Have an idea Add content Choose style Use it
Start with an empty app shell or choose from dozens of app templates
Add images, text, photos, HTML5 and various feeds such as RSS, YouTube and Flickr
Choose color palettes and generate live tiles and splash and lock screens from your content
Use it immediately on your phone, open your source code in Visual Studio, or take your XAP over Windows Phone Store to publish
apps.windowsstore.com
Title of the demoDemo