天天看點

WP7 Dev [2] Windows Phone 7 For Silverlight 生命周期

程式員兩難的關鍵是我們如何維持一個非常靈敏的使用者體驗,同時又要提供一些多任務操作和維護電池壽命。Windows Phone 7提供了當應用程式處于非活動期内使用墓碑機制。本文将讨論Windows Phone 7的多任務、墓碑、這個生命周期。

  整個應用程式生命周期是從程式的可執行子產品啟動到終止,目的是在任何時候可提供一個靈敏的系統。這時為了避免倆個以上的應用程式繼續在背景運作,争奪資源,導緻前台應用程式慢和損耗電池壽命。為了做到這一點Windows Phone 7隻允許一個應用程式在前台運作,并不允許第三方應用程式在背景運作,當一個應用程式轉到背景運作後(并沒有關閉),那麼它就是一個墓碑。墓碑意味著應用程式是惰性的,OS依然儲存着該應用程式的狀态資訊。當使用者重新啟動前,進入墓碑狀态,它可以儲存目前狀态,當使用者在此打開時應用程式還在目前。

  Navigation

  當按下硬體中的傳回按鈕後,你的應用程式就終止了。當你在使用一個應用程式中,又啟動了一個新的應用程式,但是舊的應用程式沒有被關閉,它就處于非活動狀态。但是它将儲存很短的時間,時間一到它就被terminated。

  關鍵的差別在于,關閉是當應用程式再被啟動時是建立了一個新的執行個體,以前的狀态沒被儲存,而處于非活動狀态是OS儲存了該應用程式的狀态,不是建立執行個體,并不是真正的終止運作。

  手機支援三種造成程式已終止的假象事件

  Events are fired on the termination and resumption of an application

  開發人員可以使用墓碑事件(tombstone events)來維護應用程式和目前頁面的狀态

  當程式再次運作時,開發人員可以使用此狀态來恢複應用程式

  當下列任何情況發生後,你的應用程式立即進入墓碑狀态

  使用者通過按鍵導航到一個新的應用程式,例如開始鍵

  你的應用程式使用了一個launcher或者Chooser來啟動另一個程序

  另一方面,如果你啟動了一些為數不多的本地服務,你的應用程式并不進入墓碑狀态,除非新的前台程式需要更多的資源。下列是一些你可啟動的,并不一定是墓碑狀态的服務

  · PhotoChooserTask

  · CameraCaptureTask

  · MediaPlayerLauncher

  · EmailAddressChooserTask

  · PhoneNumberChooserTask

  · Multiplayer Game Invite [games]

  · Gamer You Card [games] 

  生命周期

  在應用程式這個生命周期中,狀态間的互相轉換都會觸發一些相關的事件。

  這些事件是

  Launching /Activating

  Running

  Deactivating /Closing

  所有的這些事件都在Microsoft.Phone.Shell.PhoneApplicationService 類中。

  Launching

  當使用者點選了應用程式在開始菜單上的層,應用程式就進入啟動狀态,這時, Launching事件就會被觸發。它總是建立一個新的執行個體,是以在處理launching事件上,你不過渡到一個已存在的會話,雖然你隻是檢查獨立存儲上的新執行個體資訊。

  Launching是建立新的執行個體,resumed是激活執行個體,兩者是互斥的。

  Running

  Launching或Activating事件發生應用程式就進入運作狀态。closing or deactivating事件發生就退出運作狀态。

  Closing or Deactivating

  程式退出運作狀态的;兩種方式

  closing說明程式已終止,Deactivating隻是程式停用,它還存在記憶體中。

  Activating

  處于停用狀态的程式被激活。

繼續閱讀