运行状态处理
当转到运行状态时,有与此事件相关的特殊处理程序:打开“App.xaml.cx”类并查看 OnLaunched
方法 - 当用户从已终止状态打开应用程序时,此方法被激活:
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
// Do not repeat app initialization when the Window already has content,
// just ensure that the window is active
if (rootFrame == null)
{
// Create a Frame to act as the navigation context and navigate to the first page
rootFrame = new Frame();
rootFrame.NavigationFailed += OnNavigationFailed;
//You can get information about previous state of the app:
if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
{
//The app was previously suspended but was then shutdown
//at some point because the system needed to reclaim memory.
}
if (e.PreviousExecutionState == ApplicationExecutionState.ClosedByUser)
{
//The user closed the app with the close gesture in tablet mode,
//or with Alt+F4.When the user closes the app, it is first suspended
//and then terminated.
}
if (e.PreviousExecutionState == ApplicationExecutionState.NotRunning)
{
//An app could be in this state because it hasn't been launched since the last time
//the user rebooted or logged in. It can also be in this state if it was running
//but then crashed, or because the user closed it earlier.
}
if (e.PreviousExecutionState == ApplicationExecutionState.Running)
{
//The app was already open when the user tried to launch it again
}
if (e.PreviousExecutionState == ApplicationExecutionState.Suspended)
{
//The user either minimized or switched away from your app
//and didn't return to it within a few seconds.
}
// Place the frame in the current Window
Window.Current.Content = rootFrame;
}
//When available system resources allow, the startup performance of Windows Store
//apps on desktop device family devices is improved by proactively launching
//the user’s most frequently used apps in the background. A prelaunched app
//is put into the suspended state shortly after it is launched.Then, when the
//user invokes the app, the app is resumed by bringing it from the suspended
//state to the running state--which is faster than launching the app cold.
//The user's experience is that the app simply launched very quickly.
if (e.PrelaunchActivated == false)
{
if (rootFrame.Content == null)
{
rootFrame.Navigate(typeof(MainPage), e.Arguments);
}
Window.Current.Activate();
}
}