Metro应用中的OnLaunched事件和恢复事件有什么区别?

问题描述 投票:1回答:3

我试图了解应用程序的生命周期。

场景:我正在推出一个空白的应用程序;之后,我故意从该应用程序中出来并打开一个单独的应用程序。过了一段时间,我看了一下任务管理器。空白应用似乎已暂停。然后我再次启动空白应用程序(处于暂停状态)。那一刻,它必须击中恢复事件,对吧?

1)为什么恢复事件没有解雇? (应该触发恢复事件,因为应用程序从挂起状态进入运行状态。)

2)为什么OnLaunched事件被解雇了?

3)OnLaunched事件仅在应用程序第一次启动时触发,还是在终止后激活时触发?

提前致谢。

windows microsoft-metro windows-runtime
3个回答
2
投票

我对Metro应用程序的经验不多,但我会尝试回答:

广告1)如果您的应用程序从暂停状态变为运行状态(如此MSDN article on Metro Application Lifecycle中的图表),则恢复事件应该实际触发。我在类似的情况下进行了一些测试,但确实如此。顺便说一句,这是我发现的这个事件的最佳描述:

当应用程序从Suspended状态恢复时,它将进入Running状态并从暂停状态继续。没有应用程序数据丢失,因为它存储在内存中。因此,大多数应用程序在恢复时不需要执行任何操作。但是,该应用程序可能已被暂停数小时甚至数天。因此,如果您的应用具有可能已过时的内容或网络连接,则应在应用恢复时刷新这些内容。

广告3)启动我理解的只是一种特殊的激活(应用程序的可能入口点之一),它对应于从非运行 - >运行的转换。一些引言:

当应用程序被激活时,无论出于何种原因,系统都会发送Activated事件。

当用户切换到已终止的应用程序时,系统会发送Activated事件,其中Kind设置为Launch,PreviousExecutionState设置为Terminated或ClosedByUser。应用程序应加载其保存的应用程序数据并刷新其显示的内容。

广告2)如果执行了OnLaunched并且没有触发Resuming事件,我的猜测是您的应用处于“未运行状态”,例如它在重新启动之前被系统终止(Suspended-> Not Running)。我不知道为什么任务管理器可能没有刷新这些信息。


0
投票

我可以回答这个问题:

1)但为什么恢复事件没有解雇? (恢复事件需要触发,因为应用程序从挂起状态进入运行状态)

有一个调试按钮可供您强制应用程序进入暂停状态。在快速搜索visual studio搜索“调试位置”。这是一个调试工具栏,您可以在调试时点击“暂停”按钮。一旦你回到你的应用程序(在你回去之前给它几秒钟),那么你应该得到恢复事件。


0
投票

ResumeEvent未触发,因为您从开始屏幕或其固定磁贴中打开了应用程序。在这种情况下,该应用程序被视为已再次启动。这就是OnLaunched事件被执行而不是ResumeEvent的原因。

要确保触发ResumeEvent,请在切换到其他应用程序后等待10秒钟,然后转到左上角并将应用程序带回前台。确保等待10秒,然后Windows将应用程序视为正在运行。

© www.soinside.com 2019 - 2024. All rights reserved.