本文简单介绍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
原文地址:http://www.cnblogs.com/jiangyongtao/archive/2010/10/17/1853394.html