Windows 8 生命周期管理(4)

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);

}

最后,如果应用所展示内容,没有需要刷新的,就不用处理恢复事件了。

原文地址:https://www.cnblogs.com/finehappy/p/2858207.html