Windows Phone 學習筆記 (3) – App的生命週期

  • 1686
  • 0

瞭解 Windows Phone App 的生命週期

 Photo by onebitzero.com

 

(本文於 http://blog.tonycube.com 同步發表)

 

§ Application life cycle (生命週期)

在 Windows Phone 7 中的應用程式有 4 個生命事件:

  • Launching (啟動)
  • Closing (關閉)
  • Activated (目前正在使用)
  • Deactivated (退到背景停止活動)

及2個狀態:

  • Running
  • tombstoning

(Photo by MSDN

 

當我們由首頁的 Tile(動態磚) 或應用程式列表中啟動應用程式,便會產生新的應用程式執行個體,然後觸發 Launching 事件;在 Launching 事件中可以做一些初始化的動作,但要特別注意的是,不要在 Launching 事件中做會長時間執行的動作,因為 Launching 事件是發生在頁面顯示之前,所以在 Launching 事件沒有完成之前,頁面都是看不到的,整個螢幕都會是黑黑的一片,所以若執行長時間的作業,很容易被誤認為應用程式停止回應或是其他的異常情形,這是不好的。 

 

經過 Launching 的事件之後,應用程式的第一個頁面就會顯示出來,這時候會進入到應用程式執行中 ( Running ) 的狀態,這時如果使用者按下實體返回鍵,就會觸發 Closing 的事件,之後就會把應用程式整個關閉了。 如果在第一個頁面下按下實體開始鍵,並不會關閉應用程式,而是將應用程式變為 tombstoning(墓碑)狀態,並退到背景。如下圖:

 

(Photo by MSDN

 

當使用者在第一個頁面按下實體開始鍵,應用程式會先進入 Deactivated 事件,接著便是進入 tombstoning 狀態,應用程式就退到背景並停止運作(看不到應用程式,但它並沒有被關閉)。

 

使用者可能會開啟其他應用程式,當它關閉其他的應用程式,按下實體返回鍵來重新啟動原本被放到背景的應用程式時,會先觸發 Activated 事件,之後回到 Running 狀態。

 

通常會在 Deactivated 事件中暫存使用者輸入的資料,然後在 Activated 事件中將資料重新讀回。對使用者來說,他會看到上次離開時所填寫的資料,而不需要重新填寫。Deactivated 事件內處理的動作必須在10秒內完成,否則系統會強制關閉該應用程式。

 

WP7會將應用程式中的頁面儲存在堆疊中,所以當使用者從第一個頁面進入第二個頁時,第一個頁面就被推入堆疊,當按下實體返回鍵時,應用程式時並不會被關閉,而是將第二個頁面清除,然後從堆疊中取回第一個頁面,所以若要真正的關閉應用程式,必須一路返回之前進入的頁面,直到所有頁面都從堆疊中取出後,才會執行 Closing 事件,將應用程式真的關閉。

 

總結,在應用程式的任何頁面按下實體開始鍵,都不會關閉應用程式,而是退到背景。要真正關閉應用程式必須一路將頁面堆疊取出到無才會關閉。瞭解應用程式的生命週期,才知道要在什麼時候儲存或取出資料,對使用者來說是很重要的。