Windows.UI.WebUI.WebUIApplication与WinJS.Application

时间:2013-12-18 13:40:18

标签: events winjs lifecycle

Windows.UI.WebUI.WebUIApplication与WinJS.Application有什么区别?

WinJS.Application是一个命名空间。 WebUIApplication是一个对象(或一类对象)。但请考虑以下因素:

WebUIApplication支持以下事件:     WebUIApplication.activated     WebUIApplication.resuming     WebUIApplication.suspending     WebUIApplication.navigated

WinJS.Application命名空间定义以下事件:     onactivated     oncheckpoint     的onerror     装载的     onready     onsettings     onunload的

特别是,为什么使用WebUIApplication而不是使用WinJS.Application进行恢复,但似乎激活和检查点可以以任何一种方式完成?

Windows.UI.WebUI.WebUIApplication.onresuming = function (args) { ... }; // OK

WinJS.Application.oncheckpoint = function (args) { ... }; // OK

WinJS.Application.onactivated  = function (args) { ... }; // OK

WinJS.Application.onresuming  = function (args) { ... }; // NOT OK

1 个答案:

答案 0 :(得分:3)

您在Windows。*命名空间中引用的API是应用模型的实际核心。另一方面,WinJS中的所有内容都是包装器,旨在简化应用程序模型,这样做有价值。例如,大多数应用程序需要对挂起事件执行一些操作,并且WinJS提供了一个sessionState对象,该对象在重新启动应用程序时会自动保存,并重新加载。但是,因为WinJS通常不需要执行任何操作来恢复,所以它不会包装该特定事件。

换句话说,Windows。*(WinRT)API是您编写应用程序时必须使用的核心。 WinJS是一个可选的库,完全不需要,但包含大多数应用程序将使用的许多必需品(如控件)。

通常,您将使用WinJS事件以方便使用。在此模型中包含恢复也很容易:为WebUIApplication.oneresuming事件添加处理程序,并调用WinJS.Application.queueEvent(“resuming”,...),然后将“恢复”事件路由到WinJS.Application中宾语。这样,您就可以在一个地方集中处理应用程序事件。

我在免费电子书的第3章,HTML,CSS和JavaScript的第二版编程Windows应用程序中,更多地讨论了这些关系,目前正在预览中。见http://aka.ms/BrockschmidtBook2