把 Windows Phone Developer Tools 裝起來後,幾分鐘之內就寫好一個超陽春 BMI,由於微軟的開發工具非常強大,SDK 的使用習慣跟以往的 Web Form 相去不遠,很容易就能夠上手。經過了幾分鐘的初體驗之後,就開始要練內功 - 基本觀念 。不過我沒用過 Windows Phone,一些觀念或操作方式只能看著模擬器想像,如果有理解錯誤的地方,請多多指教囉。
Windows Phone 應用程式的基本模型就像下面這張圖, Application 裏面有許多 Page:
- Running : 使用者透過「磚塊牆」或「應用程式列表」啟動你的應用程式,或者透過 Navigation 連到的 Application ,就會馬上進入這個狀態,簡單說就是你正在使用的應用程式,就是正在 Running 狀態。
- Dormant : 當使用者離開到其他 Application 時,原本在 Running 的狀態的 Application 會轉換到 Dormant 休眠的狀態,並且停止它所有要處理的程序,但整個 Application 仍然被存在記憶體當中,等待隨時被喚醒回到 Running狀態。
- Tombstoned : 在 Dormant 狀態下的 Application 隨時都可能被轉換到 Tombstoned 狀態,也就是被終結掉啦。但它會在 Deactivated 事件中保存一些必要的資訊,像是轉換 Page 的順序啦、目前在哪一個 Page,還會保存一個 Dictionary 的物件,讓使用者再度回到 Application 的時候(指是從其他 Applicaton 按下 Back 鈕回到原本的 Application),才不會資料都不見了,或者不是在剛剛使用的那個 Page ,而造成不佳的使用者驗體。而 MSDN 也有提到,Windows Phone 最多同時能保存 5 個 Application 的狀態資訊。
要注意的是,假設你有一個 Application 正在 Dormant 或 Tombstoned 狀態下,然後又從「磚塊牆」或「應用程式列表」啟動該 Application ,這時的 Application 將會是 New Instance,而你舊的 Application 將會被終結掉,所以在狀態處理上面需要特別留意,否則可能會造成不太好的使用經驗。
當 Application 在做狀態轉換的時候,就會觸發一些事件,而你可以輕易的在這些事件中執行你需要做的事情。
- Application 事件
- Lunching : New Instance 的 Application 將會觸發這個事件。
- Deactivated : 從 Running 狀態轉到 Dormant 時觸發。
- Activated : 從 Dormant 或 Tombstoned 狀態回到 Running 狀態時觸發。
- Closing : 當使用者 按下 Back 鍵離開 Application 的時候觸發。
- Page 事件
- OnNavigatedFrom : 進入 Page 時觸發。
- OnNavigatedTo : 離開 Page 時觸發。
Windows Phone Application 執行模型就像下面這張圖
- Application State
- 當你從一個 Web Service 取下資料後,要在不同的 Page 中使用這筆資料,但是當你的 Application 只要觸發 Deactivated 或 Activated 事件時,這些資料都會不見,除非你把資料存在 Windows Phone 的儲存設置當中。
實作方式: How to: Preserve and Restore Application State for Windows Phone - Page State
- 可以想像成是 Web Form 的 ViewState,當每個 Page 在轉換的時候,Windows Phone 只會保存部分的重要資訊(PhoneApplicationPage 的 State Dictionay),如果你自已有額外的資訊要儲存時,利用 Page State 就可以做得到。
實作方式:How to: Preserve and Restore Page State for Windows Phone



0 意見:
張貼意見