Windows Phone 开发学习笔记(六) Hello Windows Phone之生死有命
现在为止只不过对Windows Phone中的MainPage.xaml有所了解,项目中还有一个App.xaml没有看。既然MainPage是与页面内容相关,那么App肯定是与整个应用有关。而且App也是XAML类型的文件,它和MainPage.xaml结构应该类似,之前的研究也能派上用场。
<Application x:Class="HelloWindowsPhone.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"><!--Application Resources--><Application.Resources></Application.Resources><Application.ApplicationLifetimeObjects><!--Required object that handles lifetime events for the application--><shell:PhoneApplicationService Launching="Application_Launching" Closing="Application_Closing" Activated="Application_Activated" Deactivated="Application_Deactivated"/></Application.ApplicationLifetimeObjects></Application>
App.xaml中的内容很少,前面部分在上一篇中已经介绍过,主要看Application.Resources和Application.ApplicationLifetimeObjects。从注释就能够看出,Application.Resources负责应用的各种资源,Application.ApplicationLifetimeObjects对应用的生命周期事件(启动、关闭、激活和释放)进行处理。
由于Hello Windows Phone特别简单,没有用到其他的资源,所以Application.Resources里的内容是空的,关于这个属性的详细介绍可参照
http://msdn.microsoft.com/en-us/library/system.windows.application.resources(v=VS.95).aspx
里面有应用实例,这里只记着可以管理资源,等到需要时再仔细研究。
Application.ApplicationLifetimeObjects中的shell:PhoneApplicationService负责应用的生命周期事件,它的事件类似MainPage.xaml中Button的Click事件。既然Click事件在MainPage.xaml.cs中有响应函数ShowMessage_Click (object sender, RoutedEventArgs e),那么这四个生命周期事件在App.xaml.cs中肯定也有自己的响应函数。接下来就转到App.cs中看一看。
通过函数名称很容易就在App.xaml.cs中找到对应的四个响应函数:
// Code to execute when theapplication is launching (eg, from Start)// This codewill not execute when the application is reactivatedprivatevoid Application_Launching(object sender, LaunchingEventArgse){}// Code toexecute when the application is activated (brought to foreground)// This codewill not execute when the application is first launchedprivatevoid Application_Activated(object sender, ActivatedEventArgse){}// Code toexecute when the application is deactivated (sent to background)// This codewill not execute when the application is closingprivatevoid Application_Deactivated(object sender, DeactivatedEventArgse){}// Code toexecute when the application is closing (eg, user hit Back)// This codewill not execute when the application is deactivatedprivatevoid Application_Closing(object sender, ClosingEventArgse){}
不过这四个什么都没有做,看注释能够了解一些基本信息,对应用的生命周期有个大概了解。
App.xaml.cs是HelloWindows Phone中最长的一个文件,不过它的注释也是最多的,通过注释和函数名称就能对App类有很好的理解。
首先是类成员变量:
public PhoneApplicationFrameRootFrame { get; privateset; }
它是应用的根框架。
接着就是App类的构造函数:
public App(){// Global handler for uncaught exceptions. UnhandledException += Application_UnhandledException;// Standard Silverlight initializationInitializeComponent();// Phone-specific initializationInitializePhoneApplication();// Show graphics profiling information while debugging.if (System.Diagnostics.Debugger.IsAttached){// Display the current frame rate counters.Application.Current.Host.Settings.EnableFrameRateCounter = true;// Show the areas of the app that are being redrawn in each frame.//Application.Current.Host.Settings.EnableRedrawRegions = true;// Enable non-production analysis visualization mode, // which shows areas of a page that are handed off to GPU with a colored overlay.//Application.Current.Host.Settings.EnableCacheVisualization = true;// Disable the application idle detection by setting the UserIdleDetectionMode property of the// application's PhoneApplicationService object to Disabled.// Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run// and consume battery power when the user is not using the phone.PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;}}
构造函数首先添加异常处理函数Application_UnhandledException:
private voidApplication_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e){if(System.Diagnostics.Debugger.IsAttached){// Anunhandled exception has occurred; break into the debuggerSystem.Diagnostics.Debugger.Break();}}
App构造函数接着调用InitializeComponent,是不是看着有点眼熟?在之前的“心有灵犀”中见过它,不用看定义,它里面肯定包括载入App.xaml的内容。验证一下吧!右击函数名InitializeComponent,选择Go to definition,跳转到App.g.i.cs文件。InitializeComponent的定义如下:
public void InitializeComponent() {if(_contentLoaded) {return;}_contentLoaded = true;System.Windows.Application.LoadComponent(this,new System.Uri("/HelloWindowsPhone;component/App.xaml",System.UriKind.Relative));}
里面果然载入了App.xaml文件。
现在来看,App的一系列文件与MainPage一系列文件是相似的,都是一个模式,下一篇继续分析App.xaml的剩余精彩部分。
Windows Phone 开发学习笔记(六) Hello Windows Phone之生死有命相关推荐
- Windows驱动开发学习笔记(六)—— Inline HOOK
Windows驱动开发学习笔记(六)-- Inline HOOK SSDT HOOK Inline Hook 挂钩 执行流程 脱钩 实验一:3环 Inline Hook 实验二:0环 Inline H ...
- Windows驱动开发学习笔记(七)—— 多核同步内核重载
Windows驱动开发学习笔记(七)-- 多核同步 基础知识 并发与同步 分析 InterlockedIncrement 原子操作相关API 内核文件 多核同步 临界区 示例一:错误的临界区 示例二: ...
- Windows驱动开发学习笔记(五)—— SSDT HOOK
Windows驱动开发学习笔记(五)-- SSDT HOOK 系统服务表 系统服务描述符表 实验一:通过代码获取SSDT表地址 通过页表基址修改页属性 方法1:修改页属性 方法2:修改CR0寄存器 实 ...
- Windows驱动开发学习笔记(四)—— 3环与0环通信(常规方式)
Windows驱动开发学习笔记(四)-- 3环与0环通信(常规方式) 设备对象 创建设备对象 设置数据交互方式 创建符号链接 IRP与派遣函数 IRP的类型 其它类型的IRP 派遣函数 派遣函数注册位 ...
- Windows驱动开发学习笔记(三)—— 内核空间内核模块
Windows驱动开发学习笔记(三)-- 内核空间&内核模块 内核空间 实验 第一步:编译如下代码 第二步:将 .sys 文件拷贝到虚拟机中 第三步:部署 .sys 文件并运行 第四步:创建一 ...
- Windows驱动开发学习笔记(二)—— 驱动调试内核编程基础
Windows驱动开发学习笔记(二)-- 驱动调试&内核编程基础 基础知识 驱动调试 PDB(Program Debug Database) WinDbg 加载 PDB 实验:调试 .sys ...
- Windows驱动开发学习笔记(一)—— 环境配置第一个驱动程序
Windows驱动开发学习笔记(一)-- 环境配置&第一个驱动程序 环境配置 第一个驱动程序 环境配置 安装VS2010:https://pan.baidu.com/s/1uZWWxCtB60 ...
- windows内核开发学习笔记十五:IRP结构
windows内核开发学习笔记十五:IRP结构 IRP(I/O Request Package)在windows内核中,有一种系统组件--IRP,即输入输出请求包.当上层应用程序需要访问底层输入输 ...
- windows内核开发学习笔记十八:IRP 处理的标准模式
windows内核开发学习笔记十八:IRP 处理的标准模式 在 Windows 内核中的请求基本上是通过 I/O Request Packet 完成的. I/O manager ---> Dis ...
- windows内核开发学习笔记十七:IRP 和 IO_STACK_LOCATION 的交互
windows内核开发学习笔记十七:IRP 和 IO_STACK_LOCATION 的交互 前面两篇学习笔记分别介绍了IRP和IO_STACK_LOCATION,整个设备栈来处理这个IRP,但是每个设 ...
最新文章
- 小姐姐在硅谷生活了三年,实现了理想的生活模式
- 关于判断checkbox选中问题
- jquery插件---自动补全类插件
- JavaFX键盘事件
- mysql性能测试工具之sysbench
- 域名转让代码_互联网域名转让协议(中英)
- 4. DICOM图像层级分类-DCMTK-元素读取
- 名侦探柯南主线剧情整理
- 这 IDEA超全个性化设置,实用,属实装逼!
- 网页P2P加速视频解析dplayer播放器源码(带记忆播放功能)
- 微软出了一个Python小白神器!
- android 模拟器手机如何添加文件到sd卡?
- Android 强制设置横屏或竖屏
- 凡客登录页面html代码,简洁的凡客购物商城首页模板源码
- 微信开放标签--H5唤醒手机app/跳转微信小程序
- 解决centos7中的Welcome to emergency mode
- 计算机物流文献综述,(物流管理)物流管理系统文献综述.pdf
- 面 试 题 葵 花 宝 典
- PACS-医学影像(二)
- Markdown 通用的音乐视频插入方法