22
Vitor Meriat Software Development Engineer @vitormeriat vitormeriat.com.br O ciclo de vida da aplicação Universal Windows Platform Criando APPs inteligentes e responsivas

TDC 2015 SP - O ciclo de vida de aplicações UWP

Embed Size (px)

Citation preview

Vitor MeriatSoftware Development [email protected]

O ciclo de vida da aplicação Universal Windows Platform  Criando APPs inteligentes e responsivas

UM WINDOWS

PhoneDesktops

& All-in-OnesClassic Laptop

XboxTablet

Application lifecycle

Installation1

Activation2 NotRunning

Activation2

Event

Handlers

UI

Running

Suspending3

Suspended

Event

Handlers

UI

Application LifetimeApps can be in 1 of 3 states

Not RunningRunningSuspended

Application receive events when transitioning between states

Except: Suspended->NotRunning

Running

SuspendedNotRunning

Activated Suspending

Resuming

App Lifecycle

Runningapp

Suspendedapp

Suspending Terminatedapp

Low memory

Resuming

Background task executes

http://windows.Microsoft.com

Application Lifetime

Running Suspended Running Suspended Not Running

Launched Suspended(5 seconds)

Activated Suspended(5 seconds)

Mem

ory

Terminated(no event)

OnNavigatedFrompublic override Task OnNavigatedFromAsync(IDictionary<string, object> state, bool suspending){ if (suspending) { state["FirstName"] = this.FirstName; state["LastName"] = this.LastName; state["Email"] = this.Email; } return Task.FromResult<object>(null);}

OnNavigatedTopublic override void OnNavigatedTo(string parameter, NavigationMode mode, IDictionary<string, object> state){ try { this.FirstName = state["FirstName"].ToString(); this.LastName = state["LastName"].ToString(); this.Email = state["Email"].ToString(); } finally { state.Clear(); }}

Extended execution

Extended execution• Requesting extended execution• There is no guarantee resources are available

Extended execution has no UI

• Scenario “I have data this time”• Handle the Revoked event (1 second warning)

• Scenario “I’m a special kind of app”• These apps run indefinitely

• Special kinds of apps1. Turn-by-turn (location tracking) app2. Audio & VOIP application

There is a balance between load speed & shutdown time

Extended execution (type 1)M

em

ory

Running Extend

Suspended(5 seconds)

Request Revoked(1 second)

Suspended

No UI(short)

Suspended(No event)

Whensuspendin

g

Requesting extension in suspend• private async void OnSuspending(object sender, SuspendingEventArgs args)

{ var deferral = e.SuspendingOperation.GetDeferral(); using (var session = new ExtendedExecutionSession{ Reason = ExtendedExecutionReason.SavingData }) { session.Description = "Upload Data";

• session.Revoked += (s, e) => { Log("Save incomplete"); };

try { if (await session.RequestExtensionAsync() == ExtendedExecutionResult.Denied) // takes 3 seconds

• UploadBasicData(); else // takes 8 seconds

• await UploadDataAsync(session); Log("Save complete"); } catch { Log("Save failed"); } finally { deferral.Complete(); } } }

How Windows interacts with you app?

Suspend and resume

Background execution

Resource management

System triggers and notifications

[email protected]@studentpartner.com