如何在Javascript Win8 Metro应用程序中捕获前台和后台事件

How to trap foreground and background events in a Javascript Win8 Metro App

本文关键字:前台 事件 后台 应用程序 Javascript Win8 Metro      更新时间:2024-01-23

Win8 Metro在进程进入激活和挂起状态时提供回调,但当应用程序进入前台或进入后台时呢?应用程序一进入后台,这个过程就不一定会暂停,同样,它可能会在上一次发布时仍处于激活状态时进入前台。

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

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

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

如果您的应用程序随后被挂起,则也将获得相应的挂起事件。

根据我的理解,一旦metro应用程序完全失去焦点(完全脱离屏幕),操作系统就会给它15秒的时间运行其OnSuspend代码,然后停止并挂起。每当整个应用程序完全失去焦点时就会发生这种情况,而当它再次获得焦点时(用户切换回它)则会发生相反的情况。

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

在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