il ciclo di vita fast application switching e fast resume

24
IL CICLO DI VITA: FAST APPLICATION SWITCHING E FAST RESUME Dan Ardelean Nokia Developer Champion [email protected] Twitter: @danardelean NOKIA WEBINAR

Upload: microsoft-mobile-developer

Post on 31-Jul-2015

458 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Il Ciclo di Vita Fast Application Switching e Fast Resume

IL CICLO DI VITA: FAST APPLICATION SWITCHING E FAST RESUME

Dan Ardelean Nokia Developer Champion [email protected] Twitter: @danardelean

NOKIA WEBINAR

Page 2: Il Ciclo di Vita Fast Application Switching e Fast Resume

Stack di navigazione Launching & Closing Dormant & Tombstoned Dizionari di stato Fast Application Resume Obscured & Unobscured Async & await

AGENDA

Page 3: Il Ciclo di Vita Fast Application Switching e Fast Resume

• 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

Page 4: Il Ciclo di Vita Fast Application Switching e Fast Resume

• 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); }

Page 5: Il Ciclo di Vita Fast Application Switching e Fast Resume

Not running

Running

Launching

LANCIO APPLICAZIONE

Page 6: Il Ciclo di Vita Fast Application Switching e Fast Resume

Not running

Running

Launching Closing

Deactivating

Dormant

Exit Application_Closing

Deactivate Application_Deactivated Dormant

CHIUSURA & DISATTIVAZIONE

Page 7: Il Ciclo di Vita Fast Application Switching e Fast Resume

Istanza in memoria Stato applicazione, data e oggetti non vengono

modificati Deve essere pronta per essere chiusa

DORMANT Not running

Running

Launching Closing

Deactivating Activating

Dormant

Page 8: Il Ciclo di Vita Fast Application Switching e Fast Resume

Attiv

a D

orm

ant

Tom

bsto

ned

Page 9: Il Ciclo di Vita Fast Application Switching e Fast Resume

Tombstoned

Not running

Running

Launching Closing

Deactivating Activating

Dormant

Da Dormant a Tombstone «memory based» Salva i dizionari di stato e lo stack di navigazione Bisogna ricaricare i dati

TOMBSTONED

Page 10: Il Ciclo di Vita Fast Application Switching e Fast Resume

Tombstoned

Not running

Running

Launching Closing

Deactivating Activating

Dormant

TOMBSTONED O DORMANT? private void Application_Activated(object sender, ActivatedEventArgs e) { if (e.IsApplicationInstancePreserved) { // Dormant } else { // Tombstoned } }

Page 11: Il Ciclo di Vita Fast Application Switching e Fast Resume

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

Launching Closing

Deactivating Activating

Dormant

Page 12: Il Ciclo di Vita Fast Application Switching e Fast Resume
Page 13: Il Ciclo di Vita Fast Application Switching e Fast Resume

TERMINAZIONE NORMALE

M

O

O

O

Page 14: Il Ciclo di Vita Fast Application Switching e Fast Resume

DORMANT

O

O

O

IsApplicationInstancePreserved==true

Page 15: Il Ciclo di Vita Fast Application Switching e Fast Resume

TOMBSTONED

O

O

IsApplicationInstancePreserved ==false

M

O

Page 16: Il Ciclo di Vita Fast Application Switching e Fast Resume

TOMBSTONED

O

O

O

o

O

Page 17: Il Ciclo di Vita Fast Application Switching e Fast Resume

• 3 Dizionari

• Pagina: PhoneApplicationPage.State

• Istanza app

PhoneApplicationService.Current.State

• Applicazione

System.IO.IsolatedStorage.IsolatedStorageSettings.ApplicationSettings

STATO APPLICAZIONE

Page 18: Il Ciclo di Vita Fast Application Switching e Fast Resume

MANAGEMENT DELLE RISORSE

O

O

MediaPlayer.Pause MediaElement.Pause VibrateController.Stop Photocamera.Dispose

Page 19: Il Ciclo di Vita Fast Application Switching e Fast Resume

MANAGEMENT DELLE RISORSE

O

Socket rimangano scollegati MediaElement non connesso Photocamera disposed

Page 20: Il Ciclo di Vita Fast Application Switching e Fast Resume

• 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>

Page 21: Il Ciclo di Vita Fast Application Switching e Fast Resume
Page 22: Il Ciclo di Vita Fast Application Switching e Fast Resume

• 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;

Page 23: Il Ciclo di Vita Fast Application Switching e Fast Resume

• 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();

Page 24: Il Ciclo di Vita Fast Application Switching e Fast Resume

10/1/2013 © 2013 Nokia. All rights reserved. © 2013 Microsoft. All rights reserved.

Grazie! Blog: sviluppomobile.blogspot.com Email: [email protected] Twitter: @danardelean