Upload
matteo-pagani
View
1.131
Download
0
Tags:
Embed Size (px)
Citation preview
Multitasking, background agents and local
notifications
Mobile Software Engineer @ GaiaMicrosoft MVP – Device Application Development
Twitter: @qmatteoqFacebook: http://www.facebook.com/matteo.paganiBlog: http://qmatteoq.tostring.itE-mail: [email protected]
Matteo Pagani
Application lifecycle di Windows Phone
Running
Deactivated
Tombstoned
Activated
Save state
Restore state
Application lifecycle di Mango
Running
Deactivated
Dormant
Activated
Tombstoned
Save state
Restore state
Applicatione lifecycle di Mango
Dormant Il processo non viene terminato, ma rimane in background Vengono terminati tutti i thread e i timer in esecuzione Vengono scollegate tutte le risorse in uso (camera, rete, ecc.)
Tombstoned In caso ci sia bisogno di risorse, le applicazioni dormant più
vecchie vengono comunque mandate in tombstone.
Activated La proprietà IsApplicationInstancePreserved ci dice se
l’applicazione è andata in tombstoned oppure no. In caso sia a false, occorre recuperare lo stato dal tombstone.
Deactivated Occorre comunque salvare lo stato della nostra applicazione
DeactivatedWindows Phone si occupa di
disconnettere e fermare tutto ciò che possa consumare risorse in eccesso.
XNA Audio Paused
Sensors Notifications suppressed
Networking Cancelled
Sockets Disconnected
MediaElement Disconnected
Camera Disposed
ActivatedNon tutte le risorse vengono riattivate in automatico: alcune devono essere
manualmente riattivate dall’applicazione.
XNA Audio Resumed
Sensors Notifications resumed
Networking Completed with Cancellation
Sockets -
MediaElement -
Camera -
MULTIPLE TILESUn’invasione di tile sullo schermo
Multiple tiles
Un’app può creare da codice più tile in home
Ogni tile è identificata univocamente da un deep link
Le tile possono essere aggiornate sia localmente che da remoto
Multiple tiles<?xmlversion="1.0"encoding="utf-8"?> <wp:Notification xmlns:wp="WPNotification"> <wp:Tile Id="/DetailView.xaml?ID=5"> <wp:BackgroundImage></wp:BackgroundImage> <wp:Count></wp:Count> <wp:Title></wp:Title> <wp:BackTitle></wp:BackTitle> <wp:BackContent></wp:BackContent> <wp:BackBackgroundImage></wp:BackBackgroundImage> </wp:Tile> </wp:Notification>
LET’S CODE!
BACKGROUND AGENTSEseguiamo operazioni in background
Background agents Un progetto Visual Studio separato da quello
dell’applicazione vera e propria.
Vengono istanziati dall’applicazione foreground ma eseguiti in background quando questa non è in esecuzione.
Possono coesistere massimo 18 agents contemporaneamente.
L’utente può abilitarli o disabilitarli da un apposito pannello di controllo.
Vengono disattivati dopo 14 giorni che l’applicazione collegata non viene utilizzata.
Cosa possono fare?
Consentito
Tiles Toast Servizi di localizzazione Connettività Accesso all’Isolated Storage Sockets La maggior parte delle API
Non consentito
Interagire con la UI Librerie XNA Microfono e fotocamera Sensori Riprodurre audio senza
l’ausilio delle apposite API per il background audio
Periodic agents Vengono eseguiti ogni 30 minuti
Possono eseguire operazioni per un tempo massimo di 15 secondi
Se il device è in uso, vengono eseguiti uno alla volta
Se il device è in stand by, vengono eseguiti in parallelo
Nascono per task di sincronizzazione veloce, geo localizzazione, notifiche, ecc.
Resource Intensive agents
Vengono eseguiti solo nel momento in cui il device è in ricarica (collegato al pc o ad una presa di corrente)
Il device deve essere collegato ad una rete Wi-Fi
Possono eseguire operazioni per un tempo massimo di 10 minuti
Nascono per task di sincronizzazioni di grandi quantità di dati
LET’S CODE!
ALARMS & REMINDERSPer gli utenti smemorati
Alarms
Promemoria non legato ad un contesto applicativo specifico
Possibilità di impostare un suono personalizzato
Pulsanti snooze e dismiss
Reminders
Legati ad un contesto applicativo
Supporto ai deep link Pulsanti snooze e
dismiss con snooze personalizzabile
LET’S CODE!
Grazie!
Mobile Software Engineer @ GaiaMicrosoft MVP – Device Application Development
Twitter: @qmatteoqFacebook: http://www.facebook.com/matteo.paganiBlog: http://qmatteoq.tostring.itE-mail: [email protected]
Matteo Pagani