首页 > 嵌入式软件 > windows phone

在进行WP开发之前,与其它开发技术一样,我们需要简单了解一个WP应用序的生命周期,我们不一定要深入了解,但至少要知道在应用程序生命周期内的每一阶段,我们应当做什么,不推荐哪些操作等,这也是为了让我们开发出更高性能,更优秀的应用程序打下坚实的基础。

本文引用地址: http://embed.21ic.com/software/windowsphone/201605/41262.html

下图是官方给出的WP应用程序执行模型图。

在上图中,我们要注意以下四个事件:

1、Launching 事件。

说白了,就是应用程序刚启动时触发的事件,由于这个事件的一点特殊性,尽量不要在该事件处理程序中做大量的操作,比如比较耗时间的作业,为什么呢?你想想,如果你的某个操作需要消耗大量时间的话,那么,你肯定会发现,程序启动的速度很慢,这样一来,用户会很不爽,用户体验就大打折扣。

2、Activated事件。

应用程序被激活时触发,例如,我的程序上面有一个按钮,用户点击后打开发短信的“窗口”,当用户发送完短信后,发短信的页面就关闭,这时候,我们的应用程序又从后台程序变为前台程序了,Activated事件将触发,注意的是,第一次启动程序时是不触发该事件的。

3、Deactivated事件。

与Activated事件相对,比如上面举的例子,当我在程序上点击按钮时,发送短信的页面将启动,这时候,当前应用程序就被前面的发短信的页面挡住了,也就是说,当前程序被发送到后台,这个时刻就触发了Deactivated事件。不过,如果应用程序将关闭,该事件不触发。

4、Closing事件。

从字面意思就猜到该事件在啥时候发生了。对,当应用程序关闭时发生,但在应用程在导航中被发送到后台时不发生,比如刚才说的打开发短信的页面后,虽然程序被发送到后台了,但由于它仍在运行,没有退出,所以这个时候不触发。但如果我从“开始”或桌面磁砖中启动程序后,然后再通过“返回”键回到桌面,这个时候因为程序会退出,所以该事件触发。

为了验证这些事件是如何发生的,我们在app.xaml.cs文件中,分别为这几个事件写下调试输出代码。

[csharp] 
  1. // 应用程序启动(例如,从“开始”菜单启动)时执行的代码  
  2. // 此代码在重新激活应用程序时不执行;  
  3. private void Application_Launching(object sender, LaunchingEventArgs e)  
  4. {  
  5.     System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString() + " - 应用程序首次启动。");  
  6. }  
  7.   
  8. // 激活应用程序(置于前台)时执行的代码  
  9. // 此代码在首次启动应用程序时不执行  
  10. private void Application_Activated(object sender, ActivatedEventArgs e)  
  11. {  
  12.     System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString() + " - 应用程序被激活。");  
  13. }  
  14.   
  15. // 停用应用程序(发送到后台)时执行的代码  
  16. // 此代码在应用程序关闭时不执行  
  17. private void Application_Deactivated(object sender, DeactivatedEventArgs e)  
  18. {  
  19.     System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString() + " - 应用程序休眠。");  
  20. }  
  21.   
  22. // 应用程序关闭(例如,用户点击“后退”)时执行的代码  
  23. // 此代码在停用应用程序时不执行  
  24. private void Application_Closing(object sender, ClosingEventArgs e)  
  25. {  
  26.     System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString() + " - 应用程序关闭。");  
  27. }  

然后,我们运行程序,当主页面出现后,点击模拟器上的“返回”键把程序关闭。

这时候,我们再去看一下“输出”窗口。

通过这个实验,我们发现Activated事件和Deactivated事件未被触发,为什么?自己思考吧。

下面,我们在页面中放一个按钮,点击按钮后,打开发送短信的页面。

[html] 
  1. <!--ContentPanel - 在此处放置其他内容-->  
  2. <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">  
  3.     <Button VerticalAlignment="Top"  
  4.             HorizontalAlignment="Center"  
  5.             Content="请点击我"  
  6.             FontSize="64"  
  7.             Click="Button_Click"  
  8.             Margin="0,12,0,0"/>  
  9. </Grid>  

编写单击事件代码。

[csharp] 
  1. private void Button_Click(object sender, RoutedEventArgs e)  
  2. {  
  3.     Microsoft.Phone.Tasks.SmsComposeTask sms = new Microsoft.Phone.Tasks.SmsComposeTask();  
  4.     sms.To = "13672265138";  
  5.     sms.Body = "你好啊,今天中午请我吃牛肉炒饭吗?";  
  6.     sms.Show();  
  7. }  

按F5运行,再点击按钮,打开发短信页面。

看看“输出”窗口,这时候,就看到Deactivated事件发生了,因为程序还没有退出,只是被放到后台。

接着,点击模拟器的“返回”,退回到我们的程序。再看看输出窗口。

这个时候,Activated事件就发生了。

OK,今天的牛皮就吹到这里吧。

换一批

延伸阅读

[真心话] 读研到工作,复旦技术大牛的8年“模电”奋斗之路

读研到工作,复旦技术大牛的8年“模电”奋斗之路

复旦攻读微电子专业模拟芯片设计方向研究生开始到现在五年工作经验,已经整整八年了,其间聆听过很多国内外专家的指点。 最近,应朋友之邀,写一点心得体会和大家共享。......

关键字:模拟电路

[新鲜事] 茶中黄金!狮峰龙井采茶动用无人机:头茶2分钟送下山

茶中黄金!狮峰龙井采茶动用无人机:头茶2分钟送下山

狮峰龙井是“狮龙云虎梅”五种龙井茶里的最高等级,价格贵如黄金。近日,狮峰龙井进入采摘季节,菜鸟ET物流实验室联合天猫,首度将无人机技术应用到传统的茶叶运输环节,让狮峰龙井头茶提前了两个小时上市。......

关键字:狮峰龙井 无人机

[猎聘集] 程序员的创业陷阱:接私活

程序员的创业陷阱:接私活

我本身是 Java 工程师出身,写代码至今已超过 15 年,创业也超过 10 年,曾经外包过很多项目给别人,也接过很多外包的项目,现在不接了,只经营电子报发送平台,在二年内累积超过 5000 家企业用户使用。......

关键字:程序员 私活

[新鲜事] 2018 最具就业前景的 7 大编程语言,还不抓紧学学?

2018 最具就业前景的 7 大编程语言,还不抓紧学学?

软件开发是一个动态的领域。新的编程语言、框架和技术陆续出现,流行,然后消失。开发者需要不断学习新技能,掌握企业发展所需要的新技术。......

关键字:编程语言

[猎聘集] 2017年集成电路行业应届生薪资表曝光

2017年集成电路行业应届生薪资表曝光

今年的秋天来的比往常早,也更冷一些。对于想找工作的同学们来说,可能没有比一份收集了许多IC公司薪资待遇的文章更加暖心的了。......

关键字:集成电路行业 应届生 薪资
条评论

我 要 评 论

网友评论

大家都爱看

  • 扇出型晶圆级封装的优势和挑战!

    我们有能力创造一些能保持前代性能并且更好更小的电子设备,例如今天的可穿戴设备、智能手机或平板电脑,这是由于很多因素超过摩尔定律而快速发展,从而能够从底层的嵌入组件发展到今天把它们封…

    2018-03-29
  • Xilinx推出革命性的新型自适应计算产品

    自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX)),近日宣布推出一款超越FPGA功能的突破性新型产品,名为ACAP(Adaptive Compute Acceleration Platform,自适应计算加速…

    2018-03-20
  • 赛普拉斯为树莓派3 B+ IoT单板计算机提供强大稳定的无

    先进嵌入式系统解决方案的领导者赛普拉斯(纳斯达克代码:CY)近日宣布其Wi-Fi&#174;和蓝牙&#174;combo解决方案为全新的树莓派 3 B+(Raspberry Pi 3Model B+)IoT单板计算机提供强大稳定的无线连接…

    2018-03-20
  • 观看直播领红包,SEED-A10加速卡助力人工智能

    随着云服务器、云计算的发展,大家对硬件加速的需求越来越多,但是随着设备功耗的上升、性能需求越来越高,常规加速设备以及开始不能满足需求,因此FPGA逐渐在硬件加速中找到了自己的位置,而艾…

    2018-03-19
  • 特朗普:博通不得以任何形式收购高通

    白宫周一(3月12日)晚发出声明,川普(特朗普)总统出于“国家安全”考量、禁止新加坡博通公司(Broadcom)收购美国高通公司(Qualcomm)。

    2018-03-14