Jen

Windows Phone 7 學習筆記 (一) - 基本觀念

把  Windows Phone Developer Tools 裝起來後,幾分鐘之內就寫好一個超陽春 BMI,由於微軟的開發工具非常強大,SDK 的使用習慣跟以往的 Web Form 相去不遠,很容易就能夠上手。經過了幾分鐘的初體驗之後,就開始要練內功 - 基本觀念 。不過我沒用過 Windows Phone,一些觀念或操作方式只能看著模擬器想像,如果有理解錯誤的地方,請多多指教囉。

Windows Phone 應用程式的基本模型就像下面這張圖, Application 裏面有許多 Page:


而 Application 會在以下三種狀態中做轉換,
  • 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 時觸發。
在 Appliation 的每個事件中都不能處理超過 10 秒的工作,例如讀取 Local Database 、 Remoting Procedure Call … 等工作,都不要在 Application 的事件中做處理。像讀資料庫 、RPC 這種 I/O Bound 的處理,是一定都要實作 Network I/O Pattern,使用 Call back 的方式,以提供使用者最佳的使用體驗。

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
沒有實際的 Windows Phone 可以操作一下還真是麻煩,一切都只能靠幻想了!

4 意見:

  匿名

2013年5月10日 上午8:08

I am regular reader, how arе you everуboԁy?

Τhis pаragrаph posted at this website is rеаlly
fаstidious.

my web blοg - macbook repair malaysia

  匿名

2013年5月10日 下午1:01

Ӏ enjoy reаdіng through an article thаt will make
people think. Also, thanks for аlloωing for me tο commеnt!


Visit my page ... iphonerepairkl.my

  匿名

2013年5月11日 下午6:56

Hurrah! In the еnd I gοt a blοg from where I can tгuly obtain useful faсts гegarding mу study and knowledgе.


Also visit my page: wiredtreereviewpro.drupalgardens.com

  匿名

2013年5月13日 下午1:49

Infοrmative article, exаctlу
what I wanted to find.

my ωebsite - repair iphone pj