15.2.2 应用挂起
首先,注册挂起事件处理函数,这表明应用在系统挂起它之前应将其数据保存,代码如下。
using System;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Activation;
using Windows.UI.Xaml;
partial class MainPage
{
public MainPage()
{
InitializeComponent();
App.Current.Suspending += new SuspendingEventHandler(App_Suspending);
}
}
之后,在挂起前储存应用的数据。当应用处理挂起事件时,可以将重要的应用程序数据,通过处理函数保存起来。应用程序使用“LocalSettings”属性(调用存储器API)同步保存简单的应用程序数据。
处在挂起状态时,系统倾向于将应用和其数据保存在内存中,但是如果系统没有资源来让应用存在内存中,系统将会终止应用。当用户切回一个原本挂起状态,之后被终止的应用时,系统发出激活事件,并应在OnLaunched方法中还原应用的数据。
系统终止应用时不会发出通知,所以务必在应用挂起时就存好应用程序的数据,以便当应用在终止之后,又被激活时可以恢复应用。
15.2.3 应用恢复
首先,注册恢复事件处理函数,为的是使用户在切换到其他应用后,再切换回来的事件进行处理,代码如下。
partial class MainPage
{
public MainPage()
{
InitializeComponent();
App.Current.Resuming += new Windows.UI.Xaml.EventHandler(App_Resuming);
}
}
然后,刷新挂起之后所显示的内容。由于恢复事件不会上升到UI线程中出现,所以必须使用一个调度器(Dispatcher),将更新置于UI表面,所示代码如下:
CoreDispatcher dispatcher = Window.Current.Dispatcher;
private void App_Resuming(object sender, object e)
{
// There are no special arguments for the resuming event
dispatcher.Invoke(CoreDispatcherPriority.Normal,
(object invokedSender, InvokedHandlerArgs invokedArgs) =>
{
// TODO: Refresh network data
}, this, null);
}
最后,如果应用所展示内容,没有需要刷新的,就不用处理恢复事件了。