jiangyongtao

Windows Phone 世外涛缘

导航

Windows Phone 7的Launchers&Choosers简介及其行为浅析

Posted on 2010-10-17 10:35  世外涛缘  阅读(2030)  评论(2编辑  收藏  举报

本文简单介绍Launchers和Choosers的概念,以及它们的区别,简述各个Launcher和Chooser的功能,并分析它们的行为。

Launchers和Choosers是为了统一调用系统提供的服务(程序),让每个第三方应用程序调用相同系统功能时,保持界面的一致性。

Launchers

启动器:启动Windows Phone 7内置应用程序。

包括以下几个:

EmailComposeTask:启动发送Email的应用程序。

MediaPlayerLauncher:启动MeidaPlayer应用程序。

PhoneCallTask:启动打电话应用程序。

SearchTask:启动搜索应用程序。

SmsComposeTask:启动发短信应用程序。

WebBrowserTask:启动IE。

MarketplaceDetailTask:启动Marketplace客户端应用程序,并显示指定应用的详细信息。

MarketplaceHubTask:启动Marketplace客户端应用程序。

MarketplaceReviewTask:启动Marketplace客户端应用程序的审查页面。

MarketplaceSearchTask:启动Marketplace客户端应用程序的搜索页面。

Choosers

选择器:调用Windows Phone 7的应用程序选择所需要的信息(例如照片,电话等)

CameraCaptureTask:启动照相界面,拍照后返回照片图像。

EmailAddressChooserTask:启动选Email地址界面,选择后返回Email地址。

PhoneNumberChooserTask:启动电话号码选择界面,选择后返回电话号码。

PhotoChooserTask:启动图片选择界面,选择后返回图像信息。

SaveEmailAddressTask:启动保存Email地址界面,选择后返回保存是否成功。

SavePhoneNumberTask:启动保存电话号码界面,选择后返回保存是否成功。

启动器和选择器怎样区别?

启动器只是负责把相应的应用程序启动起来就可以了。

选择器需要将相应的应用程序界面启动,等待操作结束返回的结果。

Launcher行为分析

通常情况下,Laucher启动后,App.xaml.cs中的Application_Deactivated方法被执行,应用程序进入Deactivating状态;当Launcher操作结束,Application_Activated方法被执行,返回到应用程序,进入Activating状态。不过PhoneCallTask和MediaPlayerLauncher有些特别。

统计详见下表:

  Application_Deactivated Application_Activated 所在页面的构造函数
EmailComposeTask 执行 执行 执行
MediaPlayerLauncher 执行 执行 不执行
PhoneCallTask 不执行 不执行 不执行
SearchTask 执行 执行 执行
SmsComposeTask 执行 执行 执行
WebBrowserTask 执行 执行 执行
MarketplaceDetailTask 执行 执行 执行
MarketplaceHubTask 执行 执行 执行
MarketplaceReviewTask 执行 执行 执行
MarketplaceSearchTask 执行 执行 执行

PhoneCallTask弹出的可以视为是一个MessageBox,只是对程序覆盖,并未将应用程序切换到后台,所以都未执行。

MediaPlayerLauncher启动后,按返回键,返回到应用程序所在页面时,并不执行该页面的构造函数,其他Launcher却都执行,没想明白,谁知道请留言,谢谢!

Chooser行为分析

通常情况下,Chooser启动后,

  Application_Deactivated Application_Activated 所在页面的构造函数
CameraCaptureTask 执行 执行 不执行
EmailAddressChooserTask 执行 执行 不执行
PhoneNumberChooserTask 执行 执行 不执行
PhotoChooserTask 执行 执行 不执行
SaveEmailAddressTask 执行 执行 执行
SavePhoneNumberTask 执行 执行 执行

从上表可以看出后两个SaveEmailAddressTask和SavePhoneNumberTask的行为与前面四个不同,前四个Chooser执行完毕后,自动返回到应用程序调用它的页面,而这两个Chooser执行完毕后,不会自动返回,而需要按返回键,返回到之前调用它的页面。

因此如果不在构造函数中创建(new)和Cempleted事件的绑定,后连个Chooser将无法正常工作。

建议将Chooser的创建(new)和Completed事件的绑定操作都放到构造函数中,不要放置到其它位置。

代码下载

 

 

参考文章:

http://msdn.microsoft.com/en-us/library/ff769556(VS.92).aspx

Windows Phone 7 Training Kit for Developers--Lab_LaunchersAndChoosersWP7Lab