Il ciclo di vita fast application switching e fast resume

Post on 09-May-2015

103 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

Transcript

IL CICLO DI VITA:FAST APPLICATION SWITCHING E FAST RESUMEDan ArdeleanNokia Developer Championdan@xpresscode.eu Twitter: @danardelean

NOKIA WEBINAR

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

AGENDA

• 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

LE BASI

• Possiamo manualmente rimuovere elementi dallo stack

• Non possiamo manualmente aggiungere elementi• Le pagine possono essere notificate se vengono rimosse dallo

stack

STACK DI NAVIGAZIONE

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

Istanza in memoria

Stato applicazione, data e oggetti non vengono modificati

Deve essere pronta per essere chiusa

DORMANTNot running

Running

LaunchingClosing

DeactivatingActivating

Dormant

Att

iva

Dorm

an

tTo

mbst

oned

Tombstoned

Not running

Running

LaunchingClosing

DeactivatingActivating

Dormant

Da Dormant a Tombstone «memory based»

Salva i dizionari di stato e lo stack di navigazione

Bisogna ricaricare i dati

TOMBSTONED

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

FAST APPLICATION RESUME

Tombstoned

Not running

Running

LaunchingClosing

DeactivatingActivating

Dormant

Dormant/TombstonedDEMO

TERMINAZIONE NORMALEUtente MainPagePhone OS Applicazion

eLancio l’applicazione

Costruttore applicazione App()

Application_Launching

Costruttore MainPage

MainPage OnNavigatedTo

Utilizzo applicazione

Back

MainPage OnNavigatingFrom

MainPage OnNavigatedFrom

Application_Closing

DORMANTUtente MainPagePhone OS Applicazion

e

Utilizzo applicazione

Start

MainPage OnNavigatingFrom

MainPage OnNavigatedFrom

Application_DeactivatedBack

Application_Activated

MainPage OnNavigatedTo

Utilizzo applicazione

IsApplicationInstancePreserved==true

Application_Activated

TOMBSTONEDUtente MainPagePhone OS Applicazion

eUtilizzo applicazione

Start

MainPage OnNavigatingFrom

MainPage OnNavigatedFrom

Application_Deactivated

Back

IsApplicationInstancePreserved==false

Processo terminato

Costruttore applicazione App()

Costruttore MainPageMainPage OnNavigatedTo

Utilizzo applicazione

Application_Activated

TOMBSTONEDUtente MainPagePhone OS Applicazion

eUtilizzo applicazioneIn-App

Navigation SecondPage Costruttore

MainPage OnNavigatedFrom

Application_Deactivated

Start

Processo terminato

Costruttore App()

Costruttore MainPage

MainPage OnNavigatedTo

SecondPage

SecondPage OnNavigatedTo

Back

SecondPage Costruttore

SecondPage OnNavigatedToBack

SecondPage OnNavigatedFrom

• 3 Dizionari

• Pagina:PhoneApplicationPage.State

• Istanza appPhoneApplicationService.Current.State

• ApplicazioneSystem.IO.IsolatedStorage.IsolatedStorageSettings.ApplicationSettings

STATO APPLICAZIONE

Sospensione Timers e Thread

MANAGEMENT DELLE RISORSEUtente MainPagePhone OS Applicazion

eUtilizzo applicazione

Start

MainPage OnNavigatingFrom

MainPage OnNavigatedFrom

Application_Deactivated

Rilascio risorse

MediaPlayer.PauseMediaElement.PauseVibrateController.StopPhotocamera.Dispose

Set to Dormant state

Rilascio risorseXNA Audio in pausaNessuna notifica dagli sensoriInterrompe le chiamate di reteScollega socketScollega mediaDispose Photocamera

Ripristino Timers e Thread

MANAGEMENT DELLE RISORSEUtente MainPagePhone OS Applicazion

e

Back

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

• Riattiva l’istanza Dormant, se esiste, quando l’utente lancia nuovamente l’applicazione

• Per abilitare la funzionalità bisogna modificare Properties\WMAppManifest.xml

FAST APPLICATION RESUME

<Tasks> <DefaultTask Name ="_default" NavigationPage="MainPage.xaml" ActivationPolicy="Resume"></Tasks>

Fast Application ResumeDEMO

• 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

OBSCURED & UNOBSCURED

PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled;

PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;

• Cosa succede quando usiamo async e await per Application_Closing e Application_Deactivate?

• Meccanismo per applicazioni Windows Store

ASYNC E AWAIT

var deferral = e.SuspendingOperation.GetDeferral();//TODO: Save application state and stop any background activity. await ExecuteAsync(); deferral.Complete();

04/11/2023© 2013 Nokia. All rights reserved.© 2013 Microsoft. All rights reserved.

Grazie!

Blog: sviluppomobile.blogspot.comEmail: dan@xpresscode.euTwitter: @danardelean

top related