Ciclo di vita di una applicazione windows phone tips & tricks
-
Upload
dan-ardelean -
Category
Technology
-
view
304 -
download
2
Transcript of Ciclo di vita di una applicazione windows phone tips & tricks
![Page 1: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/1.jpg)
Dan [email protected]: sviluppomobile.blogspot.comTwitter: @danardelean
Ciclo di vita di una applicazione Windows Phone: tips & tricks
![Page 2: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/2.jpg)
Agenda
Stack di navigazioneLaunching & ClosingDormant & TombstonedDizionari di statoFast Application ResumeObscured & UnobscuredAsync & await
![Page 3: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/3.jpg)
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
![Page 4: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/4.jpg)
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);}
![Page 5: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/5.jpg)
Not running
Running
Launching
Lancio applicazione
![Page 6: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/6.jpg)
Not running
Running
LaunchingClosing
Deactivating
Dormant
ExitApplication_Closing
DeactivateApplication_Deactivated
Dormant
Chiusura & disattivazione
![Page 7: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/7.jpg)
DormantIstanza in memoria
Stato applicazione, data e oggetti non vengono modificati
Deve essere pronta per essere chiusa
Not running
Running
LaunchingClosing
DeactivatingActivating
Dormant
![Page 8: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/8.jpg)
Att
iva
Dorm
an
tTo
mb
ston
ed
![Page 9: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/9.jpg)
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
![Page 10: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/10.jpg)
Tombstoned
Not running
Running
LaunchingClosing
DeactivatingActivating
Dormant
Tombstoned o Dormant?
private void Application_Activated(object sender, ActivatedEventArgs e){ if (e.IsApplicationInstancePreserved) { // Dormant } else { // Tombstoned }}
![Page 11: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/11.jpg)
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
![Page 12: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/12.jpg)
Dormant/TombstonedDemo
![Page 13: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/13.jpg)
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
![Page 14: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/14.jpg)
DormantUtente MainPagePhone OS Applicazion
e
Utilizzo applicazione
Start
MainPage OnNavigatingFromMainPage OnNavigatedFrom
Application_DeactivatedBack
Application_Activated
MainPage OnNavigatedTo
Utilizzo applicazione
IsApplicationInstancePreserved==true
![Page 15: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/15.jpg)
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
![Page 16: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/16.jpg)
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
![Page 17: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/17.jpg)
Stato applicazione• 3 Dizionari
• Pagina:PhoneApplicationPage.State
• Istanza appPhoneApplicationService.Current.State
• ApplicazioneSystem.IO.IsolatedStorage.IsolatedStorageSettings.ApplicationSettings
![Page 18: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/18.jpg)
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
![Page 19: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/19.jpg)
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
![Page 20: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/20.jpg)
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>
![Page 21: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/21.jpg)
Fast Application ResumeDemo
![Page 22: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/22.jpg)
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;
![Page 23: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/23.jpg)
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();
![Page 24: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/24.jpg)
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
![Page 25: Ciclo di vita di una applicazione windows phone tips & tricks](https://reader036.fdocuments.net/reader036/viewer/2022062300/554d1adcb4c905ca208b462f/html5/thumbnails/25.jpg)
Title of the demoDemo