【windows8开发】Metro App生命周期之启动
前文介绍过Metro App的生命周期中的各个状态(NotRunning, Running, Suspended)以及概要性的说明了程序的启动,挂起,恢复,关闭等概念,而在本文中会通过相关代码,着重介绍Metro App在启动时的一些细节。本文中的示例代码会使用C++,因为都是基于WinRT,所以Javascript的实现的原理应该是类似的,如果有希望具体了解Javascript的实现方式的,可以在回复中留言。
前文中提到过,当用户启动Metro程序时,程序并不会马上进入Running状态,开始只是NotRunning状态,如果在此状态中程序发生异常导致crash或者被Suspended,则该程序会被终止而不会保留在内存中。从NotRunning状态切换到Running状态过程中,程序会显示一个splash screen,其实就是一张启动时等待用的图片,如下图:
在VS工程的manifest(.appxmanifest)文件中可以修改希望显示的splash图片,
显示Splash后,程序开始启动,这意味着可以开始执行程序的一些初始化工作,比如设定初期显示页面,事件绑定等。那么,在哪里能执行这些处理呢?在新建C++ Metro程序的工程后,可以看到有个App.xaml.h文件,里面会override一个OnLaunched方法,启动时,onLaunched方法会被调用,看下这个方法的具体实现:
// Create a page which is defined in SplashPage.xamlauto splashPage = ref new SplashPage();// Place the customized splash page in the current Window and ensure that it is activeWindow::Current->Content = splashPage;Window::Current->Activate();