导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

如何挂起应用 (XAML)

Applies to Windows and Windows Phone

了解当系统挂起你的应用时如何保存重要的应用程序数据。 以下示例可向事件处理程序注册 Suspending 事件并将字符串保存到文件中。

路线图: 本主题与其他主题有何关联?请参阅:

说明

步骤 1: 向 suspending 事件处理程序注册

注册以处理 Suspending 事件,该事件指示在系统挂起你的应用之前,应用应该保存其应用程序数据。


using System;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Activation;
using Windows.UI.Xaml;

partial class MainPage
{
   public MainPage()
   {
      InitializeComponent();
      Application.Current.Suspending += new SuspendingEventHandler(App_Suspending);
   }
}

步骤 2: 在挂起之前保存应用程序数据

当你的应用处理 Suspending 事件时,它将有机会将其重要的应用程序数据保存到处理程序函数中。应用应该使用 LocalSettings 存储 API 来同步保存简单的应用程序数据。


partial class MainPage
{
    async void App_Suspending(
        Object sender, 
        Windows.ApplicationModel.SuspendingEventArgs e)
    {
        // TODO: This is the time to save app data in case the process is terminated
    }
}

步骤 3: 释放独占资源和文件句柄

当你的应用处理 Suspending 事件时,它还将有机会释放独占资源和文件句柄。独占资源的示例为相机、I/O 设备、外部设备以及网络资源。显式释放独占资源和文件句柄有助于确保你的应用未使用它们时其他应用可以访问它们。当在终止后又激活应用时,它应该打开其独占资源和文件句柄。

备注

每当用户切换到其他应用、桌面或“开始”屏幕时,系统都会挂起你的应用。每当用户切回到你的应用时,系统就会恢复你的应用。当系统恢复你的应用时,你的变量和数据结构的内容与系统将你的应用挂起之前的内容相同。系统会将你的应用完全恢复到你离开时的状态,使用户感觉你的应用好像一直在后台运行一样。

当你的应用被挂起后,系统会尝试将你的应用及其数据保留在内存中。但是,如果系统没有资源将你的应用保存在内存里,则将终止你的应用。当用户切换回已终止的挂起应用时,该应用会发送 Activated 事件,且应该在其 OnLaunched 方法中还原其应用程序数据。

当终止应用时系统不会通知应用,因此当挂起应用时,你的应用必须保存其应用程序数据并释放独占资源和文件句柄,并且当在终止后又激活应用时还原这些内容。

注意   如果在应用挂起期间,你需要执行一些异步工作,则需要将挂起完成时间延迟到工作完成之后。你可以使用 SuspendingOperation 对象(可通过事件参数获取)上的 GetDeferral 方法将挂起的完成延迟到你针对所返回的 SuspendingDeferral 对象调用 Complete 方法位置。

注意  为了改进 Windows 8.1 中的系统响应,在应用挂起时,我们为应用提供低优先级的资源访问。为了支持新的优先级,延长了挂起操作超时,以便应用具有与普通优先级相当的 5 秒(在 Windows 上)或者 1 到 10 秒超时(在 Windows Phone 上)。 你无法扩展或改变此超时窗口。

关于使用 Microsoft Visual Studio 进行调试的注释:  Visual Studio 禁止 Windows 挂起连接到调试程序的应用。这是为了允许用户在应用正在运行时查看 Visual Studio 调试 UI。调试应用时,可以使用 Visual Studio 将一个挂起事件发送给该应用。 请确保“调试位置”工具栏显示出来,然后单击“挂起”图标。

相关主题

任务
如何激活应用
如何恢复应用
概念
应用程序生命周期
指南
应用的挂起和恢复指南
参考
Windows.UI.Xaml.Application

 

 

显示:
© 2014 Microsoft