快速构建Windows 8风格应用30-应用生命周期管理

简介:

BlogLogo

引言

 

Windows 8 中可以启动多个应用并在其中切换,我们没有必要担心降低系统速度或消耗电池电量。 因为系统会自动挂起(有时会终止)在后台正在运行的应用。设计良好的应用可以由系统挂起、终止以及重新启动,并且这些过程看起来该应用一直在运行中。

一、原理

2

1.当激活了应用时,无论任何原因,系统都会发送 Activated 事件

2.每当用户切换到桌面或其他应用时,系统都会挂起你的应用,系统会发送Suspending事件

3.每当用户切回到你的应用时,系统就会恢复你的应用,系统会发送Resuming事件

生命周期变化

当用户启动应用程序,该应用在生命周期中可以发生哪些变化呢?

3

1.运行的应用,可以进行挂起,变成挂起的应用

2.挂起的应用,可以进行恢复,变成运行的应用

3.挂起的应用,如果系统内存不足,将直接被干掉

多应用在相互切换时的状态变化

1.启用App1

4

2.启用App2后,App1将被挂起

5

3.启用App3后,App2将被挂起,同理任何一个App后,之前的App将被挂起

6

7

4.当内存有限时,App1将会被终止掉,但是用户不会得到任何通知

8

5.用户启用App2后,App2立即从挂起状态恢复

9

Activated介绍

1.当激活应用时会触发Activated 事件

2.Windows.UI.Xaml.Application 类定义了为处理各种不同的激活类型而可以替代的一些方法,例如:OnActivated和OnLaunched

3.应用应该加载其保存的应用程序数据并刷新其显示的内容

Suspend介绍

1.系统资源专注在于用户交互的前台应用上

2.挂起的应用不会消耗任何CPU、磁盘和网络资源

3.不活动的应用对电池没有任何影响,它们是由系统挂起

4.应用之间能够快速切换

5.挂起的应用会保存在内存中

6.挂起应用中的所有线程都被挂起

Terminated介绍

1.系统需要更多内存触发

2.用户切换触发

3.用户关闭应用触发

4.系统关机触发

5.应用崩溃触发

6.在终止应用期间,没有事件被触发… 你应该在应用挂起时保存所有信息

二、实现

激活应用

当激活了应用时,无论任何原因,系统都会发送 Activated 事件。有关激活类型的列表,可以参阅 ActivationKind 枚举。

Windows.UI.Xaml.Application 类定义了为处理各种不同的激活类型而可以替代的一些方法。

对于其中一些激活类型,有特定的方法可以替代。对于其他激活类型,则替代 OnActivated 方法。

10

挂起应用

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

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

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

11

恢复应用

1.每当用户切换到桌面或其他应用时,系统都会挂起你的应用。每当用户切回到你的应用时,系统就会恢复你的应用。当系统恢复你的应用时,你的变量和数据结构的内容与系统将你的应用挂起之前的内容相同。系统会将你的应用完全恢复到你离开时的状态,使用户感觉你的应用好像一直在后台运行一样。但是,应用可能已挂起很长一段时间,因此,它应当刷新在应用挂起之后可能已发生更改的任何显示内容(如新闻源或用户位置)。

2.如果你的应用没有任何需要刷新的显示内容,则它无需处理 Resuming 事件。

12

三、最佳实践

务必执行项

1.一般情况下,将应用恢复为用户离开该应用时的状态,而不要重新启动

2.如果自用户上次访问应用以来已经过很长一段时间,则重新启动应用

3.当应用被挂起时保存应用程序数据

4.当挂起应用时释放独占的资源和文件句柄

5.在应用被挂起后恢复应用时,如果其内容自用户上次查看以来有所更改,则更新 UI

6.在应用被终止后恢复应用时,使用已保存的应用程序数据还原你的应用

7.如果无法预测用户希望恢复还是重新启动,则向他们提供选项

禁止事项

1.勿在应用移至屏幕外时终止应用

2.勿还原因崩溃而终止的应用的状态

3.勿在应用的 UI 中为用户提供关闭或终止应用的方法

不同场景应该做哪些

13

 

相关参考资料:

1.管理应用生命周期和状态(使用 C#/VB 和 XAML 的 Windows 应用商店应用)

2. 如何激活应用

3.如何挂起应用

4.如何恢复应用

5.应用程序生命周期(Windows 应用商店应用) (Windows);

6.应用的挂起和恢复指南(Windows 应用商店应用) (Windows)






 本文转自 王祖康 51CTO博客,原文链接:http://blog.51cto.com/wzk89/1088345,如需转载请自行联系原作者


相关文章
|
5月前
|
Ubuntu API C++
C++标准库、Windows API及Ubuntu API的综合应用
总之,C++标准库、Windows API和Ubuntu API的综合应用是一项挑战性较大的任务,需要开发者具备跨平台编程的深入知识和丰富经验。通过合理的架构设计和有效的工具选择,可以在不同的操作系统平台上高效地开发和部署应用程序。
224 11
|
安全 前端开发 Windows
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
本文介绍了 Electron 应用在 Windows 中的更新原理,重点分析了 `NsisUpdater` 类的实现。该类利用 NSIS 脚本,通过初始化、检查更新、下载更新、验证签名和安装更新等步骤,确保应用的更新过程安全可靠。核心功能包括差异下载、签名验证和管理员权限处理,确保更新高效且安全。
446 4
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
|
弹性计算 开发框架 安全
基于云效 Windows 构建环境和 Nuget 制品仓库进行 .Net 应用开发
本文将基于云效 Flow 流水线 Windows 构建环境和云效 Packages Nuget 制品仓库手把手教你如何开发并部署一个 .NET 应用,从环境搭建到实战应用发布的详细教程,帮助你掌握 .NET 开发的核心技能。
|
Unix Linux Ruby
在windows和linux上高效快捷地发布Dash应用
在windows和linux上高效快捷地发布Dash应用
692 4
|
Linux iOS开发 开发者
跨平台开发不再难:.NET Core如何让你的应用在Windows、Linux、macOS上自如游走?
【8月更文挑战第28天】本文提供了一份详尽的.NET跨平台开发指南,涵盖.NET Core简介、环境配置、项目结构、代码编写、依赖管理、构建与测试、部署及容器化等多个方面,帮助开发者掌握关键技术与最佳实践,充分利用.NET Core实现高效、便捷的跨平台应用开发与部署。
1609 3
|
vr&ar C# 图形学
WPF与AR/VR的激情碰撞:解锁Windows Presentation Foundation应用新维度,探索增强现实与虚拟现实技术在现代UI设计中的无限可能与实战应用详解
【8月更文挑战第31天】增强现实(AR)与虚拟现实(VR)技术正迅速改变生活和工作方式,在游戏、教育及工业等领域展现出广泛应用前景。本文探讨如何在Windows Presentation Foundation(WPF)环境中实现AR/VR功能,通过具体示例代码展示整合过程。尽管WPF本身不直接支持AR/VR,但借助第三方库如Unity、Vuforia或OpenVR,可实现沉浸式体验。例如,通过Unity和Vuforia在WPF中创建AR应用,或利用OpenVR在WPF中集成VR功能,从而提升用户体验并拓展应用功能边界。
459 1
|
XML 缓存 前端开发
Electron-builder 是如何打包 Windows 应用的?
本文首发于微信公众号“前端徐徐”,作者徐徐深入解析了 electron-builder 在 Windows 平台上的打包流程。文章详细介绍了 `winPackager.ts`、`AppxTarget.ts`、`MsiTarget.ts` 和 `NsisTarget.ts` 等核心文件,涵盖了目标创建、图标处理、代码签名、资源编辑、应用签名、性能优化等内容,并分别讲解了 AppX/MSIX、MSI 和 NSIS 安装程序的生成过程。通过这些内容,读者可以更好地理解和使用 electron-builder 进行 Windows 应用的打包和发布。
1042 0
|
数据可视化 程序员 C#
C#中windows应用窗体程序的输入输出方法实例
C#中windows应用窗体程序的输入输出方法实例
333 0
|
存储 开发者 C#
WPF与邮件发送:教你如何在Windows Presentation Foundation应用中无缝集成电子邮件功能——从界面设计到代码实现,全面解析邮件发送的每一个细节密武器!
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中集成电子邮件发送功能,详细介绍了从创建WPF项目到设计用户界面的全过程,并通过具体示例代码展示了如何使用`System.Net.Mail`命名空间中的`SmtpClient`和`MailMessage`类来实现邮件发送逻辑。文章还强调了安全性和错误处理的重要性,提供了实用的异常捕获代码片段,旨在帮助WPF开发者更好地掌握邮件发送技术,提升应用程序的功能性与用户体验。
388 0
|
C# Windows 监控
WPF应用跨界成长秘籍:深度揭秘如何与Windows服务完美交互,扩展功能无界限!
【8月更文挑战第31天】WPF(Windows Presentation Foundation)是 .NET 框架下的图形界面技术,具有丰富的界面设计和灵活的客户端功能。在某些场景下,WPF 应用需与 Windows 服务交互以实现后台任务处理、系统监控等功能。本文探讨了两者交互的方法,并通过示例代码展示了如何扩展 WPF 应用的功能。首先介绍了 Windows 服务的基础知识,然后阐述了创建 Windows 服务、设计通信接口及 WPF 客户端调用服务的具体步骤。通过合理的交互设计,WPF 应用可获得更强的后台处理能力和系统级操作权限,提升应用的整体性能。
433 0

热门文章

最新文章