#win8aca : how and when metro style apps run
DESCRIPTION
TRANSCRIPT
Apps do not get notified when
they are getting terminated
demo
User
Launches
App
Splash
screen
//Register for the Suspending event and call suspendingHandler when received Windows.UI.WebUI.WebUIApplication.addEventListener("suspending", suspendingHandler); //Handle the suspending event and save the current user session using WinJS sessionState function suspendingHandler(eventArgs) { //We are getting suspended } //Register for the Resuming event and call resumingHandler when received Windows.UI.WebUI.WebUIApplication.addEventListener("resuming", resumingHandler); function resumingHandler() { //We are getting resumed, in general do nothing }
demo
Scenario You should….
demo
demo
Running app
Tile launch activation
User taps on Tile launch
eventArgs.kind Splash Screen shown
activated event
HTTP POST
Notification Delivered
Trigger Condition
InternetAvailable,
InternetNotAvailable,
SessionConnected,
SessionDisconnected,
UserNotPresent,
UserPresent
TimeTrigger*
PushNotificationTrigger*
SessionStart*
ControlChannelTrigger*(**)
ServicingComplete
SessionConnected
SessionDisconnected
SmsReceived
TimeZoneChange
UserAway/UserPresent,
LockScreenApplicationAdded/Removed
OnlineIdConnectedStateChangeInternetAvailable
InternetAvailable/InternetNotAvailable
NetworkNotificationChannelReset
NetworkStateChange
MaintenanceTrigger
PushNotificationTrigger**
*requires lock permission
**can run in App (not BackgroundHost.exe)
function RegisterSampleBackgroundTaskWithCondition()
{
var builder = new Windows.ApplicationModel.Background.BackgroundTaskBuilder();
builder.name = "BackgroundTestWorker";
builder.taskEntryPoint = "BackgroundTestWorker.js";
// run a timetrigger for every 15 minutes
var myTrigger = new Windows.ApplicationModel.Background.TimeTrigger(15, true);
builder.setTrigger(myTrigger);
// required condition: internetAvailable
var condition = new
Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.Sys
temConditionType.internetAvailable);
builder.addCondition(condition);
// register the task
var task = myTaskBuilder.register();
task.addEventListener("progress", task_Progress);
task.addEventListener("completed", task_Completed);
}
<Application Id="App" StartPage="default.html"> <VisualElements DisplayName="SimpleBackgroundTask" Logo="images\logo.png" SmallLogo="images\smalllogo.png" Description="SimpleBackgroundTask" ForegroundText="light" BackgroundColor="#000000"> <LockScreen Notification="badge" BadgeLogo="badgelogo.png" /> <SplashScreen Image="images\splashscreen.png" /> </VisualElements> <Extensions> <Extension Category="windows.backgroundTasks" StartPage="backgroundTaskLogger.js"> <BackgroundTasks> <Task Type="timer" /> <Task Type="systemEvent" /> </BackgroundTasks> </Extension> </Extensions> </Application>
demo
CPU resource quota Refresh period
Lock screen app
Non-lock screen app