修正:
區別於案頭作業系統,Window Phone不支援應用程式在後台運行。這是為了避免了多個應用程式競爭有限的手機資源,由此避免了的處理速度和電池電量的急速下降。這裡Windows Phone 7 提供了一個新的概念,Tombstoning。在Windows Phone中,由於使用者離開當前應用程式,作業系統暫停該應用程式,但儲存瞬間狀態,以便隨時恢複 ,這個過稱稱為Tombstoning。
關於更多的大家可以去看下這篇部落格 Windows Phone 7中的Tombstoning
像Windows 系統的多任務一樣,Windows Phone 7中也可以切換應用程式,注意不是關閉程式,而是切換。關閉程式是指將程式徹底從記憶體中移除了,但是切換程式,則該程式只是被deactivate了。
這裡不具體討論Windows Phone 7在啟動時做了些什麼,在關閉時做了些什麼,在切換任務時做了些什麼,本文僅是以PhoneApplicationService實現切換任務時儲存應用程式時的狀態,下次開啟程式時原來之前儲存的狀態。至於前面那些問題,有時間會寫部落格跟大家分享。
PhoneApplicationService類
位於Microsoft.Phone.Shell下的PhoneApplicationService類提供了獲得應用程式生命週期資訊的途徑。這些資訊包括應用程式閑置狀態,以及應用程式啟用與否時的狀態的管理。
來自MSDN解解:
The PhoneApplicationService class provides access to various aspects of the application’s lifetime. This includes management of the application’s idle behavior and management of the application’s state when it becomes active or inactive.
我們可以看一下這個類的結構,我們在下面的代碼中會用到該類的兩個屬性Current和State,至於其他的有興趣的朋友可以自行研究。
Current可以擷取當前應用程式的PhoneApplicationService的執行個體
State是一個基於索引值對的IDictionary,用來儲存你想儲存當前應用程式的狀態
實現步驟
1. 建立一個Windows Phone 7 應用程式,向名為ContentPanel的Grid中添加TextBox,命名為tbUserName,Text屬性清空
2. 雙擊tbUserName,導航到後置代碼,編寫tbUserName的TextChanged事件,如
3. 編輯應用程式啟動事件,代碼如
我們可以先運行下程式,在輸入框中輸入一些字母,然後按後退鍵,或者啟動鍵,再次進入應用程式時,輸入框仍然是空的。
4. 接下來我們在App.xaml.cs中編寫如下代碼,設定狀態和載入狀態方法
5. 在Application_Launching、Application_Activated 中調用載入方法,Application_Deactivated、Application_Closing中調用設定狀態方法
6. 然後我們再來試一下在步驟3中的操作,會發現再次進入應用程式時,剛剛輸入的內容還在輸入框中 .
原始碼下載: