登录  | 立即注册

游客您好!登录后享受更多精彩

QQ登录

只需一步,快速开始

查看: 719|回复: 9

【转】论win10mobile的后台机制(详)

[复制链接] TA的其它主题

4

主题

87

回帖

306

积分

技术高手

积分
306
发表于 2018-10-7 12:43:41 | 显示全部楼层 |阅读模式 来自 江苏无锡
这个主题描述了一个通用的Windows平台的生命周期(UWP)应用程序,从它被激活,直到关闭。许多用户在多个设备和传播他们的工作和娱乐应用。用户现在期望应用程序记住它的状态,因为他们一心多用设备。例如,他们希望页面滚动到相同的位置和所有的控制是在同一个州。通过理解应用程序生命周期的启动、暂停和恢复,您可以提供这种无缝的行为。
为了让应用程序被激活它必须首先部署。你应用程序部署当用户安装应用程序或当您使用Visual Studio构建和运行您的应用程序在开发和测试期间。更多信息和先进的部署场景,看到应用程序包和部署。
应用程序启动
应用程序启动时NotRunning状态和用户水龙头上的应用瓷砖开始屏幕或应用程序列表。经常使用的应用程序也可以发射前的优化响应(见处理应用发射前的)。一个应用程序可能在NotRunning状态,因为它从未开始,因为它是跑步然后崩溃,或者因为它是暂停但不能保存在内存中,并由系统终止。启动然后激活是不同的。激活是当应用程序被激活通过搜索合同等合同或扩展。
OnLaunched方法被调用时启动一个应用程序——包括应用目前暂停时在内存中。LaunchActivatedEventArgs参数包含之前的应用程序和激活状态参数。
当用户切换到你的终止应用程序,系统发送LaunchActivatedEventArgs args类型设置为启动和PreviousExecutionState将终止或ClosedByUser。应用程序应该加载保存应用程序数据,刷新显示内容。
如果NotRunning PreviousExecutionState的价值,应用程序应该在最初好像被推出。
当一个应用程序启动,Windows应用程序显示一个闪屏。配置闪屏,看到添加一个闪屏。
显示启动画面时,应用程序应该准备好它的用户界面。这个应用程序的主要任务是注册事件处理程序和设置任何自定义UI需要加载初始页面。这些任务只需要几秒钟。如果应用程序需要从网络或请求数据需要从磁盘检索大量的数据,这些活动之外的完成激活。应用程序可以使用自己的自定义加载UI或较长时闪屏等待这些长时间运行的操作来完成。看到更多的时间和显示闪屏闪屏样品更多信息。程序完成后激活,进入运行状态和闪屏消失(和所有的资源和对象被清除)。
应用程序激活
一个应用程序可以由用户通过各种激活扩展和分享合同等合同。应用程序列表的方式激活,看到ActivationKind。
Windows.UI.Xaml。应用程序类定义了各种激活方法可以覆盖处理类型。激活的几个类型有一个特定的方法,您可以覆盖等如OnFileActivated OnSearchActivated,等。对于其他激活类型,覆盖OnActivated方法。
可以测试你的应用的激活代码看到为什么它被激活,它是否已经处于运行状态。
应用程序可以恢复以前保存的数据在激活操作系统应用程序终止的事件,和用户随后换它。窗户已经暂停后可以解除你的应用的原因。用户可以手动关闭应用程序,或者退出,系统可能运行低资源。如果用户启动应用程序窗口后终止它,应用程序接收应用程序。OnActivated回调,用户看到你的应用程序的启动画面,直到应用程序被激活。您可以使用此事件来确定应用程序是否需要恢复的数据保存最后一次暂停时,是否必须加载应用程序的默认数据。因为闪屏,您的应用程序代码可以投资一些处理时间来做到这一点不存在任何明显的延迟给用户虽然前面提到的担忧还长时间运行的业务应用如果你重启或者继续。
OnActivated事件数据包括PreviousExecutionState属性告诉你哪个州你的应用是在激活之前。这个属性是ApplicationExecutionState枚举的值之一:
原因终止PreviousExecutionState产权行动的价值
终止由系统(例如,由于资源约束)终止恢复会话数据
收用户,或由用户closedbyuser process-terminated开始默认数据
意外终止,或应用程序没有运行在当前用户会话notrunning开始默认数据

NoteCurrent用户会话是基于Windows登录。只要当前用户没有明确注销,关机,或者Windows没有重新启动因其他原因,当前用户会话持续在锁定屏幕等事件验证、切换用户等等。
PreviousExecutionState也可以运行值或暂停,但在这种情况下应用程序不是之前终止,因此你不需要恢复任何数据,因为一切都已经在内存中。
请注意
如果你使用计算机的管理员帐户登录,你不能激活任何UWP应用。
更多信息,请参阅应用程序扩展。
OnActivated与特定的激活
OnActivated方法处理所有可能的活动类型的手段。然而,更常见的使用不同的方法来处理最常见的活动类型,并使用OnActivated只回退方法不太常见的活动类型。例如,应用程序有一个OnLaunched方法的调用回调每当ActivationKind发射,这是典型的激活对于大多数应用程序。更有6 \ *为特定的激活方法:OnCachedFileUpdaterActivated,OnFileActivated,OnFileOpenPickerActivated,OnFileSavePickerActivated,OnSearchActivated OnShareTargetActivated。起始模板XAML应用程序有一个实现OnLaunched和处理程序暂停。
应用程序暂停
系统暂停应用程序在用户切换到另一个应用程序或桌面或者开始屏幕。你的应用程序也可能暂停当设备进入低功耗状态。系统恢复应用程序只要用户切换回去。当系统恢复你的应用,你的变量和数据结构都是一样的内容之前系统暂停应用程序。系统恢复应用程序完全的地方重新开始,呈现给用户的,好像是在后台运行。
当用户移动应用背景,窗户等待几秒钟看用户是否会立即切换回应用程序这样的过渡将是如果他们做快。如果用户没有这段时间内切换窗口,窗口应用程序挂起。
如果你需要做异步工作当应用程序被暂停后您将需要推迟完成暂停,直到工作完成。您可以使用GetDeferral SuspendingOperation对象上的方法(可以通过事件参数)推迟完成暂停直到你叫SuspendingDeferral对象返回的完整方法。
系统试图让你的应用程序及其数据在内存中而暂停。然而,如果系统没有资源来保持你的应用程序在内存中,该系统将终止应用程序。程序没有收到通知,他们被终止,所以唯一的机会,你必须暂停期间保存您的应用程序的数据。当一个应用程序决定终止后,它已被激活,它应该加载应用程序数据保存期间暂停,这样应用程序处于同样的状态,好像之前被停职。当用户切换回暂停应用程序被终止,该应用程序应恢复其在OnLaunched中的应用程序数据的方法。系统不通知应用程序终止,因此应用程序必须保存应用程序数据和发布独家资源和文件句柄的时候暂停,并恢复他们当应用程序被激活后终止。
如果一个应用程序为应用程序注册一个事件处理程序。暂停活动,这段代码被称为立即暂停应用程序之前。您可以使用事件处理程序来保存应用程序和用户数据。我们建议您使用应用程序数据api为这个目的,因为他们是保证完成之前,应用程序进入暂停状态。更多信息,请参阅和其他应用程序数据存储和检索设置。
你也应该发布独家资源和文件句柄,其他应用程序可以访问它们在你的应用程序不使用它们。独家资源的例子包括相机、I / O设备,外部设备和网络资源。显式地释放独家资源和文件句柄有助于确保其他应用程序可以访问它们,同时你的应用程序不使用它们。当应用程序被激活后终止,应当重新开放独家资源和文件句柄。
一般来说,应用程序应保存其状态并释放其资源和文件句柄立即处理暂停事件时,和代码不应该超过一秒才能完成。如果应用程序不返回从暂停事件在几秒,Windows假定应用程序停止响应,并终止它。
有一些应用场景的应用必须继续运行完成后台任务。例如,应用程序可以在后台继续播放音频,更多信息,请参阅背景音频)。另外,背景转移操作继续即使应用程序暂停甚至终止;更多信息,请参阅如何下载一个文件)。
指南,请参阅指南应用程序挂起和恢复。
注意调试使用Visual Studio:* Visual Studio阻止窗口暂停应用程序连接到调试器。这是为了允许用户查看Visual Studio调试UI应用程序运行时。当你调试一个应用程序,您可以使用Visual Studio发送暂停事件。确保*调试位置显示工具栏,然后单击暂停图标。
应用程序的可见性
当用户从应用程序切换到另一个应用程序,应用程序就不再可见但仍在运行状态,直到窗口暂停它。如果用户切换远离你的应用程序,但激活或切换回之前暂停,应用程序仍在运行状态。
应用程序不接收激活事件时能见度变化,因为应用程序仍在运行。Windows简单交换机的应用。如果你的应用需要做一些当用户交换机和背部,处理窗口。VisibilityChanged事件。
不依赖于特定的这些事件的顺序。
应用程序的简历
暂停应用程序用户切换时恢复或者当它时主动应用设备的低功耗状态。
枚举的状态,你的应用可以在恢复你的应用时,看到ApplicationExecutionState。当一个应用程序恢复挂起状态,进入运行状态并继续从那里时被停职。没有应用程序数据存储在内存中。因此,大多数应用程序不需要做任何事当他们恢复。然而,应用程序可以被暂停几个小时甚至几天。如果您的应用程序有可能过时的内容或网络连接,这些应该刷新简历时应用。如果一个应用程序的应用程序注册一个事件处理程序。恢复活动,它被称为应用程序时挂起状态的恢复。您可以刷新你的应用内容和数据使用该事件处理程序。
如果一个暂停应用程序被激活参与合同或扩展一个应用程序,它接收到恢复事件,然后激活事件。
虽然在一个应用程序暂停,它不接受任何的网络事件注册。这些网络事件不排队,他们只是错过了。因此,应用程序应该测试网络状态时恢复。
注意,因为恢复事件不是从UI线程,一个调度程序必须使用如果简历处理程序中的代码与UI。
指南,请参阅指南应用程序挂起和恢复。
应用程序关闭
一般来说,用户不需要关闭应用程序,他们可以让Windows管理它们。然而,用户可以选择关闭一个应用程序使用关闭手势或按Alt + F4在Windows或使用Windows Phone的任务切换器。
没有特殊事件表明,用户关闭应用程序。
用户应用程序已经关闭后,暂停和终止,进入NotRunning状态。
在Windows 8.1和以后,用户应用程序已经关闭后,应用程序从屏幕和开关列表中删除而不是显式地终止。
如果一个应用程序暂停事件注册一个事件处理程序,它被称为应用程序时暂停。您可以使用此事件处理程序来保存相关的应用程序和用户数据持久存储。
Closed-by-user行为:*如果你的应用需要做一些不同的用户关闭时关闭窗口时,您可以使用激活事件处理程序来确定应用程序是否被用户终止或窗口。看到的描述* ClosedByUser和终止状态的参考ApplicationExecutionState枚举。
我们不建议应用程序关闭自己编程方式除非绝对必要。例如,如果一个应用程序检测到一个内存泄漏时,它可以关闭,以确保用户的个人数据的安全。当你关闭一个应用程序以编程方式,系统将它视为应用程序崩溃。
应用程序崩溃
系统崩溃的经历是为了让用户尽快回到他们在做什么。你不应该提供一个警告对话框或其他通知,因为用户将推迟。
如果你的应用程序崩溃,停止响应,或者生成一个异常,发送问题报告给微软每用户的反馈和诊断设置。微软提供了错误的数据的一个子集问题报告给您,这样您就可以使用它来提高你的应用,你就可以看到这些数据在仪表板应用程序页面的质量。
当用户激活应用程序崩溃后,其激活事件处理程序接收ApplicationExecutionState NotRunning的价值,并且应该显示最初的用户界面和数据。撞击后,不要经常使用的应用程序的数据你会用于恢复暂停,因为这些数据可能是腐败;看到应用程序挂起和恢复的指导方针。
应用程序删除
当用户删除应用程序,应用程序删除,连同它所有的本地数据。删除一个应用程序不会影响用户的数据存储在文档或照片库等常见的位置。
应用程序生命周期和Visual Studio项目模板
相关应用程序生命周期的基本代码启动Visual Studio项目中提供了模板。基本应用程序处理启动激活,为您提供一个地方恢复应用程序数据,并显示主界面之前您已经添加了您自己的代码。VB,更多信息,请参见c#和c++应用程序的项目模板。
应用程序生命周期的关键api
窗户。ApplicationModel名称空间
Windows.ApplicationModel。激活名称空间
Windows.ApplicationModel。核心名称空间
Windows.UI.Xaml。应用程序类(XAML)
Windows.UI.Xaml。窗口类(XAML)

                 

---贴吧极速版 For UWP

4

主题

87

回帖

306

积分

技术高手

积分
306
 楼主| 发表于 2018-10-7 12:16:46 | 显示全部楼层 来自 江苏无锡
B49i4O1PV7lJ0o04.jpg
                 

---贴吧极速版 For UWP
回复

使用道具 举报

5

主题

106

回帖

358

积分

技术高手

积分
358
发表于 2018-10-7 12:23:52 | 显示全部楼层 来自 江苏无锡
机翻的吗
回复

使用道具 举报

4

主题

87

回帖

306

积分

技术高手

积分
306
 楼主| 发表于 2018-10-7 12:30:54 | 显示全部楼层 来自 江苏无锡
太长不看 gacnnJgVJZgf6iH0.jpg
                 

---贴吧极速版 For UWP
回复

使用道具 举报

4

主题

87

回帖

306

积分

技术高手

积分
306
 楼主| 发表于 2018-10-7 12:38:44 | 显示全部楼层 来自 江苏无锡
码
                 ——来自你觉得已经倒闭了的诺基亚ค้ค้ค้
回复

使用道具 举报

3

主题

165

回帖

539

积分

技术达人

积分
539
发表于 2018-10-7 12:46:17 | 显示全部楼层 来自 江苏无锡
看不懂
                 

---贴吧极速版 For UWP
回复

使用道具 举报

3

主题

60

回帖

239

积分

技术高手

积分
239
发表于 2018-10-7 12:53:49 | 显示全部楼层 来自 江苏无锡
g0QolbIiAxou77OC.jpg 看晕了
                 —―――――来自会嘎吱嘎吱响的lumia950xl
回复

使用道具 举报

4

主题

87

回帖

306

积分

技术高手

积分
306
 楼主| 发表于 2018-10-7 13:01:21 | 显示全部楼层 来自 江苏无锡
看不懂。。。
                 ————来自小奥利奥Nokia® Lumia™830
回复

使用道具 举报

3

主题

165

回帖

539

积分

技术达人

积分
539
发表于 2018-10-7 13:08:22 | 显示全部楼层 来自 江苏无锡
aaGUVRUTd81Ns1pg.jpg s8e8h95SGEAp5pau.jpg vW94W32ArOrulOAz.jpg
回复

使用道具 举报

4

主题

87

回帖

306

积分

技术高手

积分
306
 楼主| 发表于 2018-10-7 13:08:23 | 显示全部楼层 来自 江苏无锡
太长 你简单总结两句吧 ZNdWrpLRANrnzJrD.jpg
                 来自份额又掉到了1.2%的客户端
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|极速版|触屏版|小黑屋|申请友链|极客论坛 - 计算机软硬件与网络

GMT+8, 2026-10-9 22:41 , Processed in 0.056545 second(s), 49 queries .

快速回复 返回顶部 返回列表