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