25
Dan Ardelean [email protected] Blog: sviluppomobile.blogspot.com Twitter: @danardelean Ciclo di vita di una applicazione Windows Phone: tips & tricks

Ciclo di vita di una applicazione windows phone tips & tricks

Embed Size (px)

Citation preview

Page 1: 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

Page 2: Ciclo di vita di una applicazione windows phone tips & tricks

Agenda

Stack di navigazioneLaunching & ClosingDormant & TombstonedDizionari di statoFast Application ResumeObscured & UnobscuredAsync & await

Page 3: Ciclo di vita di una applicazione windows phone tips & tricks

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

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

Not running

Running

Launching

Lancio applicazione

Page 6: Ciclo di vita di una applicazione windows phone tips & tricks

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

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

Att

iva

Dorm

an

tTo

mb

ston

ed

Page 9: Ciclo di vita di una applicazione windows phone tips & tricks

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

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

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

Dormant/TombstonedDemo

Page 13: Ciclo di vita di una applicazione windows phone tips & tricks

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

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

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

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

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

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

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

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

Fast Application ResumeDemo

Page 22: Ciclo di vita di una applicazione windows phone tips & tricks

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

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

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

Title of the demoDemo