Application.Suspending 事件
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
当应用程序从其他状态转换为“挂起”状态时发生。
public:
virtual event SuspendingEventHandler ^ Suspending;
// Register
event_token Suspending(SuspendingEventHandler const& handler) const;
// Revoke with event_token
void Suspending(event_token const* cookie) const;
// Revoke with event_revoker
Application::Suspending_revoker Suspending(auto_revoke_t, SuspendingEventHandler const& handler) const;
public event SuspendingEventHandler Suspending;
function onSuspending(eventArgs) { /* Your code */ }
application.addEventListener("suspending", onSuspending);
application.removeEventListener("suspending", onSuspending);
- or -
application.onsuspending = onSuspending;
Public Custom Event Suspending As SuspendingEventHandler
事件类型
示例
此代码示例演示此事件的典型使用模式。 许多 XAML 示例将此代码用作 app.xaml 文件代码隐藏的一部分。 如果浏览 XAML 示例,可以找到此代码中引用的 SuspensionManager
类 API 的源代码。
async protected void OnSuspending(object sender, SuspendingEventArgs args)
{
SuspendingDeferral deferral = args.SuspendingOperation.GetDeferral();
await SuspensionManager.SaveAsync();
deferral.Complete();
}
Private Async Sub OnSuspending(sender As Object, args As SuspendingEventArgs)
Dim deferral As SuspendingDeferral = args.SuspendingOperation.GetDeferral
Await SuspensionManager.SaveAsync
deferral.Complete()
End Sub
注解
每当用户切换到另一个应用或桌面时,系统就会暂停你的应用,并在用户切换回应用时恢复你的应用。 但是,系统还可以在应用暂停时终止应用,以释放资源。 因此,应处理 Suspending 事件以执行以下操作:
- 保留用户会话状态。
- 释放资源上的任何排他锁。
- 尽可能减少内存使用量。 例如,序列化任何在重新激活后易于以对象形式重新构造的数据。
- 保存应用状态。 暂停事件是应用在终止之前收到的唯一指示, (如果它) 发生。 因此,应存储足够的会话状态 (,例如正在阅读的当前文章或当前电影播放位置) ,以在激活期间重新创建完全相同的体验。 内容创建应用的指南是尽早保存用户的工作,并且经常在暂停期间提交最后一次保存。 在挂起之前保存数据很有用,因为 Suspending 事件处理程序只有 5 秒的时间来完成其操作。
如果应用已终止,可以在 OnLaunched 方法重写中还原应用状态。 如果应用在终止之前恢复,系统会自动还原应用状态。 仅当需要刷新应用暂停时可能已更改的任何显示内容(例如新闻源或用户的位置)时,才应处理 Resuming 事件。
Suspending 事件在注册它的同一单元中运行。