WindowsPhone开发之应用序程的生命周期

  • Launching 加载(程序开始)
  • Closing 关闭(程序结束)
  • Activated 活动的(程序处于激活状态)
  • Deactivated 非活动的 (程序处于非活动状态)
  • Dormant 休眠的(程序在后台休眠)
  • Tombstoned 墓碑(程序消亡)

原文:http://wp.eoe.cn/thread-3981-1-2.html

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

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

0_1329049273NOMZ.jpg 

在上图中,我们要注意以下四个事件:
1、Launching 事件。
说白了,就是应用程序刚启动时触发的事件,由于这个事件的一点特殊性,尽量不要在该事件处理程序中做大量的操作,比如比较耗时间的作业,为什么呢?你想想,如果你的某个操作需要消耗大量时间的话,那么,你肯定会发现,程序启动的速度很慢,这样一来,用户会很不爽,用户体验就大打折扣。
2、Activated事件。
应用程序被激活时触发,例如,我的程序上面有一个按钮,用户点击后打开发短信的“窗口”,当用户发送完短信后,发短信的页面就关闭,这时候,我们的应用程序又从后台程序变为前台程序了,Activated事件将触发,注意的是,第一次启动程序时是不触发该事件的。
3、Deactivated事件。
与Activated事件相对,比如上面举的例子,当我在程序上点击按钮时,发送短信的页面将启动,这时候,当前应用程序就被前面的发短信的页面挡住了,也就是说,当前程序被发送到后台,这个时刻就触发了Deactivated事件。不过,如果应用程序将关闭,该事件不触发。
4、Closing事件。
从字面意思就猜到该事件在啥时候发生了。对,当应用程序关闭时发生,但在应用程在导航中被发送到后台时不发生,比如刚才说的打开发短信的页面后,虽然程序被发送到后台了,但由于它仍在运行,没有退出,所以这个时候不触发。但如果我从“开始”或桌面磁砖中启动程序后,然后再通过“返回”键回到桌面,这个时候因为程序会退出,所以该事件触发。

为了验证这些事件是如何发生的,我们在app.xaml.cs文件中,分别为这几个事件写下调
// 应用程序启动(例如,从“开始”菜单启动)时执行的代码
    // 此代码在重新激活应用程序时不执行;
    private void Application_Launching(object sender, LaunchingEventArgs e)
    {
             System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString() + " - 应用程序首次启动。");
    }
    // 激活应用程序(置于前台)时执行的代码
    // 此代码在首次启动应用程序时不执行
    private void Application_Activated(object sender, ActivatedEventArgs e)
    {
           System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString() + " - 应用程序被激活。");
    }
    // 停用应用程序(发送到后台)时执行的代码
    // 此代码在应用程序关闭时不执行
    private void Application_Deactivated(object sender, DeactivatedEventArgs e)
    {
           System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString() + " - 应用程序休眠。");
    }
    // 应用程序关闭(例如,用户点击“后退”)时执行的代码
    // 此代码在停用应用程序时不执行
    private void Application_Closing(object sender, ClosingEventArgs e)
    {
           System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString() + " - 应用程序关闭。");
    }

// 应用程序启动(例如,从“开始”菜单启动)时执行的代码        
// 此代码在重新激活应用程序时不执行; 
       private void Application_Launching(object sender, LaunchingEventArgs e)
{ 
           System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString() + " - 应用程序首次启动。");
}        
// 激活应用程序(置于前台)时执行的代码        
// 此代码在首次启动应用程序时不执行        
private void Application_Activated(object sender, ActivatedEventArgs e)
{ 
           System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString() + " - 应用程序被激活。");        }
// 停用应用程序(发送到后台)时执行的代码 
       // 此代码在应用程序关闭时不执行 
       private void Application_Deactivated(object sender, DeactivatedEventArgs e)        
{ 
           System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString() + " - 应用程序休眠。");        }
// 应用程序关闭(例如,用户点击“后退”)时执行的代码        
// 此代码在停用应用程序时不执行 
       private void Application_Closing(object sender, ClosingEventArgs e)        
{            
System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString() + " - 应用程序关闭。");
}



然后,我们运行程序,当主页面出现后,点击模拟器上的“返回”键把程序关闭。
这时候,我们再去看一下“输出”窗口。


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

下面,我们在页面中放一个按钮,点击按钮后,打开发送短信的页面。
<button verticalalignment="Top"
 HorizontalAlignment="Center"
Content="请点击我"FontSize="64"
 Click="Button_Click"Margin="0,12,0,0"/>



编写单击事件代码。
privatevoid Button_Click(object sender, RoutedEventArgs e)
   {
          Microsoft.Phone.Tasks.SmsComposeTask sms = newMicrosoft.Phone.Tasks.SmsComposeTask();
          sms.To = "13672265138";
          sms.Body = "你好啊,今天中午请我吃牛肉炒饭吗?";
          sms.Show();
   }
        privatevoid Button_Click(object sender, RoutedEventArgs e) 
{            
   Microsoft.Phone.Tasks.SmsComposeTask sms = newMicrosoft.Phone.Tasks.SmsComposeTask(); 
   sms.To = "13672265138";            
   sms.Body = "你好啊,今天中午请我吃牛肉炒饭吗?";
     sms.Show();
       }


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

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

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

这个时候,Activated事件就发生了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows Phone是由微软推出的移动操作系统,它提供了丰富的开发工具和教程,使开发者可以轻松地创建各种类型的应用。下面是Windows Phone开发教程的一些步骤: 1. 准备开发环境:首先,你需要安装Windows Phone SDK,并且拥有一台运行Windows 8或更高版本的电脑。然后,你需要注册一个开发者账户,这样你就可以在Windows Phone商店中发布你的应用了。 2. 学习开发语言:Windows Phone应用主要使用C#语言进行开发,因此你需要熟悉C#语言的基本语法和特性。同时,你也需要了解XAML标记语言,用于设计应用的用户界面。 3. 使用Visual Studio开发工具:Windows Phone开发主要使用Visual Studio作为集成开发环境,它提供了丰富的工具和模板,帮助你创建各种类型的应用,包括游戏、商务应用和社交应用等。 4. 学习应用生命周期:你需要了解Windows Phone应用生命周期和事件模型,以便正确地处理应用的启动、挂起和恢复等状态。 5. 学习应用的数据存储和互联网连接:在开发Windows Phone应用时,你可能需要将数据保存到本地数据库或者通过网络连接获取数据,因此你需要学习使用本地存储和网络连接的相关知识。 总之,学习Windows Phone开发需要你掌握C#语言和XAML标记语言,熟悉Visual Studio开发工具,并且了解应用生命周期和数据存储等知识。通过不断的实践和学习,你可以成为一名优秀的Windows Phone开发者。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值