Windows Phone 7的Launchers&Choosers簡介及其行爲淺析

本文簡單介紹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

發佈了9 篇原創文章 · 獲贊 9 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章