Ciclo di vita di una applicazione Windows Phone Store

26
Dan Ardelean Microsoft MVP & Nokia Champion Email: [email protected] Twitter: @danardelean Ciclo di vita di una applicazione Windows Phone Store WinRT Apps 24/04/2014 //learn

Transcript of Ciclo di vita di una applicazione Windows Phone Store

Page 1: Ciclo di vita di una applicazione Windows Phone Store

Dan ArdeleanMicrosoft MVP & Nokia ChampionEmail: [email protected]: @danardelean

Ciclo di vita di una applicazione Windows Phone Store

WinRT Apps

24/04/2014

//learn

Page 2: Ciclo di vita di una applicazione Windows Phone Store

Parliamo di…

Ciclo di vita di una applicazione Windows XAMLLaunchSuspendResumeTermination

Salvataggio e ripristino dello stato di una applicazione

Page 3: Ciclo di vita di una applicazione Windows Phone Store

Ciclo di vita?Le risorse del telefono sono limitate (soprattutto durata della batteria)

Una sola applicazione ha il primo piano

Le alte applicazioni sono sospese e/o terminate

S.O. ha meccanismi per far girare del codice in background

S.O. ha dei meccanismi per far sembrare una applicazione “viva”

Andy Wigley
'paused' or 'suspended'
Mike Taulty
Changed.
Kraig Brockschmidt
The word "tombstoned" is used elsewhere (I think in Session 1)--be sure to make the terms consistent
Nick Randolph
If "tombstoned" isn't the same as it was for wp8, then I'd discourage its use
Page 4: Ciclo di vita di una applicazione Windows Phone Store

Ciclo di vita?

Ciclo di vita simile a quello delle applicazioni Windows 8.1

Diverso da quello delle applicazioni Windows Phone 8.0

Concetti compatibili con lo sviluppo di applicazioni mobile

Differenze soprattutto per il tipo di hardware supportato dai telefoni e per la retro compatibilità con le applicazioni WP8.0, WP7.x

Page 5: Ciclo di vita di una applicazione Windows Phone Store

launch, suspend, resume

Page 6: Ciclo di vita di una applicazione Windows Phone Store

L’utente lancia un’applicazione

Lancio

NotRunning Running

Page 7: Ciclo di vita di una applicazione Windows Phone Store

Evento Application.OnLaunched

sealed partial class App : Application { /// <summary> /// Invoked when the application is launched normally by the end user. /// </summary> /// <param name="e">Details about the launch request and process.</param> protected override async void OnLaunched(LaunchActivatedEventArgs e) { // How did the app exit the last time it was run (if at all) ApplicationExecutionState previousState = e.PreviousExecutionState;

// What kind of launch is this? ActivationKind activationKind = e.Kind;

// ...

NotRunningRunning

SuspendedTerminated

ClosedByUser

LaunchFile

ProtocolVoiceCommand

Etc.

Page 8: Ciclo di vita di una applicazione Windows Phone Store

L’utente naviga verso un’altra applicazione

L’applicazione viene sospesa

Il codice viene interrotto

Timer interni sospesi

Nessun evento viene sollevato

Processo ancora vivo in memoria

Possiamo gestire la sospensione

Navigazione esterna

Page 9: Ciclo di vita di una applicazione Windows Phone Store

Evento Application.Suspending

sealed partial class App : Application { public App() { this.InitializeComponent(); this.Suspending += OnSuspending; } private async void OnSuspending(object sender, SuspendingEventArgs e) { // Ask for a deferral if you need to do async work var deferral = e.SuspendingOperation.GetDeferral();

// TODO: whatever async work you need to do when suspending

deferral.Complete(); // Then mark the deferral complete }

Tempo di sospensione limitato. Poco codice in questo metodo migliora la ‘user experience’

NB: Si usa deferral se bisogna chiamare dei metodi async. Il tempo di sospensione rimane lo stesso.

Page 10: Ciclo di vita di una applicazione Windows Phone Store

L’utente ‘torna’ nella nostra applicazione

L’applicazione viene ripristinata

Stesso processo, stesso stato della memoria

Il nostro codice inizia a girare

L’applicazione viene notificata

Lancio Indietro Task manager

Page 11: Ciclo di vita di una applicazione Windows Phone Store

Evento Application.Resuming

sealed partial class App : Application { public App() { this.InitializeComponent(); this.Suspending += OnSuspending; this.Resuming += OnResuming; }

private void OnResuming(object sender, object e) { // TODO: whatever you need to do to resume your app }

Page 12: Ciclo di vita di una applicazione Windows Phone Store

Simulazione suspend/resume per debug

In modalità debug l’app non viene sospesa/ripristinata Bisogna usare le funzioni del debugger per simulare suspend/resume

Page 13: Ciclo di vita di una applicazione Windows Phone Store

Cosa fare quando l’applicazione viene ripristinata?Verificare cosa è cambiato da quando l’applicazione è stata sospesa

Esempi (gli stessi di http://bit.ly/w8Resuming):aggiornamenti dati da sorgenti esterniverificare lo stato della connettività: online o offline?aggiornamento dati ricevuti dai sensori come bussola, geo localizzazioneRipristinare la connessione di reteaggiornamento layoutGestire nuovi dati inseriti da background task o impostazioni roaming

Page 14: Ciclo di vita di una applicazione Windows Phone Store

L’applicazione potrebbe essere chiusa dall’utente

Close

Running

ClosedByUser

NB: Il pulsante Indietro non chiude l’applicazione

Page 15: Ciclo di vita di una applicazione Windows Phone Store

Demo

Page 16: Ciclo di vita di una applicazione Windows Phone Store

Termination

Page 17: Ciclo di vita di una applicazione Windows Phone Store

SO può terminare una applicazione sospesa

Utente lancia un’altraapplicazione

OS ha poca memoriadisponibile

SO termina una applicazionesospesa in memoria

Terminated

SO ha un schema di priorità per determinare l’applicazione da terminare

Page 18: Ciclo di vita di una applicazione Windows Phone Store

SO non notifica l’applicazione che andrà essere chiusaL’applicazione viene rimossa dallo task switcher

SO può terminare una applicazione sospesa

Page 19: Ciclo di vita di una applicazione Windows Phone Store

L’utente ‘ritorna’ ad una applicazione chiusa

L’utente non sa che l’applicazione è stata chiusa

Di solito si aspetta di riprendere da dove era rimasto

Lo sviluppatore deve mantenere l’illusione che l’applicazione ha continuato a girare in background

Page 20: Ciclo di vita di una applicazione Windows Phone Store

L’utente ‘ritorna’ ad una applicazione chiusa

L’utente non deve perdere dati e dovrebbe poter continuare le attività ‘recenti’

In alcuni casi l’applicazione deve ripristinare lo stack di navigazione e lo stato della sessione precedente

La gestione del ripristino dipende dal tipo di applicazione

Nick Randolph
What concerns me is the fact that the developer is going to end up being responsible for maintaining a back stack in order to preserve navigation history if the app is terminated. Surely that can't be the expectation?
Page 21: Ciclo di vita di una applicazione Windows Phone Store

Dati temporanei vs dati persistenti

App Data Local Folder(or roaming folder for Data)

12:38

12:38

Jim JonesTel: 0111 222 333

Bob BrownTel: 0444 555 666

Arthur AbbottTel: 0777 888 999

CONTACTS

all 12:38

12:38

Work Tel: 0111 222 333

HomeTel: 0444 555 666

[email protected]

CONTACTS

Jim Jones

12:38

CONTACTS

Add PhoneMobile Phone

Phone type

Phone number0888 777

StateNavigate(Page2, ID

param)Navigate(Page3, ID

param)

Data

Page 22: Ciclo di vita di una applicazione Windows Phone Store

Demo

Page 23: Ciclo di vita di una applicazione Windows Phone Store

La classe Frame ha 2 metodi [Get/Set]NavigationState per gestire la cronologia di navigazione usando una variabile di tipo StringLa classe SuspensionManager aiuta salvare/ripristinare dentro un file lo stato globale & Frame La classe NavigationHelper college la Page a SuspensionManager via eventi locali a livello di pagina

Aiuti da framework & templates

Page 24: Ciclo di vita di una applicazione Windows Phone Store

Demo

Page 25: Ciclo di vita di una applicazione Windows Phone Store

Sessioni da seguire

17:30 Attività in background Marco dal Pino

18:00 Tiles, badges, Toasts and Action CenterMichele Locuratolo

Application Lifecycle in Silverlight AppsBuilding Apps for Windows Phone 8 Jump Start - Session 5: Windows Phone 8 Application Lifecyclehttp://aka.ms/Tsatr4

Page 26: Ciclo di vita di una applicazione Windows Phone Store

04/11/2023 28

© 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.The information contained in this document represents the current view of Microsoft Corp. on the issues discussed as of the dateof publication. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitmenton the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information presented after the date of publication.This guide is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS DOCUMENT.Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no partof this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form, by any means (electronic, mechanical, photocopying, recording or otherwise), or for any purpose, without the express written permission of Microsoft.Microsoft may have patents, patent applications, trademarks, copyrights or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Microsoft, the furnishing of this document does not give you any license to these patents, trademarks, copyrights or other intellectual property.The example companies, organizations, products, domain names, email addresses, logos, people, places, and events depicted herein are fictitious. No association with any real company, organization, product, domain name, email address, logo, person, place, or event is intended or should be inferred.