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

Windows Phone - lifecycle

要先瞭解 App 的生命週期才知道該在什麼時候做什麼事。

§ 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 事件,將應用程式真的關閉。

總結,在應用程式的任何頁面按下實體開始鍵,都不會關閉應用程式,而是退到背景。要真正關閉應用程式必須一路將頁面堆疊取出到無才會關閉。瞭解應用程式的生命週期,才知道要在什麼時候儲存或取出資料,對使用者來說是很重要的。
本文網址:http://blog.tonycube.com/2012/06/photo-by-onebitzero.html
Tony Blog 撰寫,轉載時請註明出處及文章連結,謝謝 😀

我要留言

留言小提醒:
1.回覆時間通常在晚上,如果太忙可能要等幾天。
2.請先瀏覽一下其他人的留言,也許有人問過同樣的問題。
3.程式碼請先將它編碼後再貼上。(線上編碼:http://bit.ly/1DL6yog)
4.文字請加上標點符號及斷行,難以閱讀者恕難回覆。
5.感謝您的留言,您的問題也可能幫助到其他有相同問題的人。