1

Win8 Metro 在进程进入激活和挂起状态时提供回调,但是当应用程序进入前台或进入后台时呢?该过程不一定会在应用程序进入后台后立即暂停,同样它可能会进入前台,同时仍从上次启动时被激活。

Javascript 中是否有任何事件可用于在应用程序的前台或后台执行代码?

4

3 回答 3

1

当应用程序被置于后台,但尚未暂停时,您可以使用“visibilitychanged”事件和文档对象上的“隐藏”属性:http: //msdn.microsoft.com/en-us/library /ie/hh773167(v=vs.85).aspx

当您的应用程序不再可见时(例如,用户点击开始按钮,或滑动到另一个应用程序),这些就会被触发。

如果您的应用程序随后被暂停,那么您还将获得相应的暂停事件。

于 2012-07-23T16:31:53.773 回答
0

据我了解,一旦 Metro 应用程序完全失去焦点(完全离开屏幕),操作系统就会给它 15 秒(我认为)运行其 OnSuspend 代码,然后才会停止和暂停。每次整个应用程序失去完全焦点时都会发生这种情况,而当它再次获得焦点时会发生相反的情况(用户切换回它)。

您将在这些前台和后台事件中运行的代码应该放在 Suspension 和 Reactivation 事件处理程序中

于 2012-07-23T15:06:21.300 回答
0

在 Metro 风格的应用程序中,应用程序将在用户切换离开时暂停,并在用户切换回应用程序时恢复。Metro 风格的应用程序运行全屏和沉浸式,因此“暂停”相当于您认为的“进入后台”,恢复相当于进入前台。

一旦触发了暂停事件(当用户从​​您的应用上滑开时),您的应用有 5 秒的时间来存储关闭状态。在挂起模式下,您的主执行线程被挂起,但应用程序仍保留在内存中。用户可能很快就会回到您的应用程序,然后线程会恢复并且您存储的状态永远不会使用。但是,在某些时候,Windows 可能内存过多,需要终止进程。如果您的应用程序已终止,那么您可以使用您存储的状态将您的应用程序恢复到下一次运行时终止时的状态。

查看这些资源以获取更多信息: * 不同的应用程序执行状态:http: //msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.activation.applicationexecutionstate.aspx * 相关指南:http ://msdn.microsoft.com/en-us/library/windows/apps/hh465088.aspx

于 2012-07-23T15:13:50.827 回答