WinRT Apps
Building Apps for Windows Phone 8.1 Jump Start
NotRunning Running
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;
// ...
NotRunning
Running
Suspended
Terminated
ClosedByUser
Launch
File
Protocol
VoiceCommand
Etc.
App is suspended
All code stopped
No timers tick
No events fire
Process still alive and in memory
Code has a chance to respond
(next slide)
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
}
Same app is resumed
Same process, same
memory so values of
variables are intact
All code runs
Code has a chance to
respond...
Launch Back Switcher
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
}
http://bit.ly/w8Resuming
Running
Terminated
App Data Local Folder
(or roaming folder for Data)
12:38
12:38
Jim Jones
Tel: 0111 222 333
Bob Brown
Tel: 0444 555 666
Arthur Abbott
Tel: 0777 888 999
CONTACTS
all 12:38
12:38
Work
Tel: 0111 222 333
Home
Tel: 0444 555 666
Email
jim@jones.com
CONTACTS
Jim Jones
12:38
CONTACTS
Add Phone
Mobile Phone
Phone type
Phone number
0888 777
State
Data
24
25
26
LoadState(
Parameter,
null /* dictionary */
);
27
SaveState(
dictionary
);
LoadState(
Parameter,
null /*dictionary*/
);
28
SaveState(
dictionary
);
LoadState(
parameter,
dictionary
);
29
SaveState(
dictionary
);
LoadState(
Parameter,
dictionary
);
30
...
...
31
http://aka.ms/Tsatr4
©2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, Office, Azure, System Center, Dynamics 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.

07 windows runtime app lifecycle

  • 1.
    WinRT Apps Building Appsfor Windows Phone 8.1 Jump Start
  • 6.
  • 7.
    sealed partial classApp : 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; // ... NotRunning Running Suspended Terminated ClosedByUser Launch File Protocol VoiceCommand Etc.
  • 8.
    App is suspended Allcode stopped No timers tick No events fire Process still alive and in memory Code has a chance to respond (next slide)
  • 9.
    sealed partial classApp : 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 }
  • 10.
    Same app isresumed Same process, same memory so values of variables are intact All code runs Code has a chance to respond... Launch Back Switcher
  • 11.
    sealed partial classApp : 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 }
  • 13.
  • 14.
  • 17.
  • 21.
    App Data LocalFolder (or roaming folder for Data) 12:38 12:38 Jim Jones Tel: 0111 222 333 Bob Brown Tel: 0444 555 666 Arthur Abbott Tel: 0777 888 999 CONTACTS all 12:38 12:38 Work Tel: 0111 222 333 Home Tel: 0444 555 666 Email jim@jones.com CONTACTS Jim Jones 12:38 CONTACTS Add Phone Mobile Phone Phone type Phone number 0888 777 State Data
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 33.
  • 34.
    ©2014 Microsoft Corporation.All rights reserved. Microsoft, Windows, Office, Azure, System Center, Dynamics 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.