天天看點

Windows Phone 7 中的切換應用

修正: 

差別于桌面作業系統,Window Phone不支援應用程式在背景運作。這是為了避免了多個應用程式競争有限的手機資源,由此避免了的處理速度和電池電量的急速下降。這裡Windows Phone 7 提供了一個新的概念,Tombstoning。在Windows Phone中,由于使用者離開目前應用程式,作業系統暫停該應用程式,但儲存瞬間狀态,以便随時恢複 ,這個過稱稱為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,至于其他的有興趣的朋友可以自行研究。

<a href="http://blog.51cto.com/attachment/201105/205505966.jpg" target="_blank"></a>

Current可以擷取目前應用程式的PhoneApplicationService的執行個體

<a href="http://blog.51cto.com/attachment/201105/205542950.png" target="_blank"></a>

State是一個基于鍵值對的IDictionary,用來儲存你想儲存目前應用程式的狀态

<a href="http://blog.51cto.com/attachment/201105/205614834.png" target="_blank"></a>

實作步驟

1. 建立一個Windows Phone 7 應用程式,向名為ContentPanel的Grid中添加TextBox,命名為tbUserName,Text屬性清空

2. 輕按兩下tbUserName,導航到後置代碼,編寫tbUserName的TextChanged事件,如下圖

<a href="http://blog.51cto.com/attachment/201105/205808201.png" target="_blank"></a>

3. 編輯應用程式啟動事件,代碼如上圖

我們可以先運作下程式,在輸入框中輸入一些字母,然後按後退鍵,或者啟動鍵,再次進入應用程式時,輸入框仍然是空的。

<a href="http://blog.51cto.com/attachment/201105/205849185.png" target="_blank"></a>

4. 接下來我們在App.xaml.cs中編寫如下代碼,設定狀态和加載狀态方法

<a href="http://blog.51cto.com/attachment/201105/205958951.png" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201105/210026539.png" target="_blank"></a>

5. 在Application_Launching、Application_Activated 中調用加載方法,Application_Deactivated、Application_Closing中調用設定狀态方法

6. 然後我們再來試一下在步驟3中的操作,會發現再次進入應用程式時,剛剛輸入的内容還在輸入框中 .

源代碼下載下傳:

<a target="_blank" href="http://alexis.blog.51cto.com/attachment/201105/2621421_1306414897.rar"></a>

<a href="http://down.51cto.com/data/2358240" target="_blank">附件:http://down.51cto.com/data/2358240</a>

    本文轉自xshf12345 51CTO部落格,原文連結:http://blog.51cto.com/alexis/574962,如需轉載請自行聯系原作者

繼續閱讀