作者:
Yochay
在上篇文章
中,你已經學習了Windows Phone執行模型的基礎知識。瞭解了4種事件中的3個。我們介紹了程式的Launching, Closing和Deactivated事件。現在是時候來看看最後一個事件了,這就是Activated。如果你想使用本文提供的代碼,可以在這裡下載
。
如何繼續一個墓碑化的應用程式的偵錯工作階段?——掌握Activated事件
還記得我承諾要講返回鍵的功能嗎?現在我要兌現了。不過,在實際行動之前請先通讀這些步驟和注意事項。
- 在Visual Studio中,用我們在上篇文章中建立的簡單程式開始一個新的偵錯工作階段。
- 按下Next按鈕導航至程式的第二個頁面。
- 按下Windows鍵。
- 模擬器返回到了起始介面,同時你在Visual Studio的輸出視窗中應該可以看到以下畫面:
正如你所見,我們啟動了一個新的執行個體,所以應用程式的Launching事件被觸發。然後應用程式的第一頁(預設)被啟動因此你會看到首頁面的跟蹤資訊。當按下Next按鈕後,程式會導航到第二頁,正如你從詳情頁的跟蹤資訊中看到的。最後,當你按下Windows鍵後程式會被停用,同樣也顯示在跟蹤資訊中。模擬器也回到了起始介面。
注意:不要關閉模擬器或改動代碼,
否則會啟動一個新的程式的執行個體,這不是我們想要的。
- 在Windows Phone模擬器中,你應該能看到起始介面,這時按下返回鍵。
- 這時模擬器的螢幕會變黑就好像它在等著發生什麼事兒。這是怎麼回事兒呢?其實在當前的Beta版工具中就是這麼設計的。當它在等你重新回到調試器繼續偵錯工具時螢幕會變黑同時程式沒有重新啟動
。
- 重啟
調試器並繼續
偵錯工作階段,切換到Visual Studio並按F5(或者使用任何啟動你的調試器的方法)。調試器會附加到相應的程式執行個體,模擬器繼續啟用程式,隨後Activated
事件被觸發了,正如你在看到的:
注意
:這個過程成功與否取決於一個時間限制
,如果重新載入程式的時間超過10秒
模擬器便會終止程式。因此你要抓緊。還有,你不應該在Activated事件中添加任何斷點。根據Windows Phone的設計指導,你的應用程式介面應該在10秒鐘內載入完畢,同時由於Activated事件是在首頁面建構函式之前被處理,所以在進入Activated事件中進行調試時介面不會顯示出來。
既然已經知道該做什麼了,現在就遵從上面的步驟重新啟用你的應用程式使它從墓碑狀態複活。你會注意到Visual Studio開始了一個“新的會話”(因為第一個程式的執行個體已經被終止了)。但這次跟蹤資訊的第一行顯示的是Activated而非Launching事件,在Activated事件之後,輸入視窗的下一行顯示了詳情頁面的建構函式而非程式的預設頁面,首頁面。如果觀察模擬器你會看到程式返回到了正確的頁面,它正是你按Windows鍵之前瀏覽的頁面。
你看,你已經親身體驗了程式是如何變為墓碑狀態以及如何複活。
注意
:當你的應用程式從墓碑狀態返回時,它是程式的一個新的執行個體,雖然是這樣,但你看不到Launching事件,因此你在輸入視窗中看不到Launching的跟蹤資訊。Launching事件和Activated事件是互斥的
,所以在應用程式的同一次運行中你不會看到它們同時出現
。
一些重要事項:
Launching,Deactivated,Activated和Closing事件都是應用程式級的事件。它們總是會被觸發(除非你從代碼中移除——但你不應該這麼做
)。如果你的應用程式有任何常規工作要處理,那麼這些事件正是合適的工具(我們在後面會提到)。
如你所見,應用程式可以從墓碑狀態返回到任意一個頁面,所以你不能保證哪一個頁面會比其他的提前載入。
關於墓碑機制最重要的一點是要記住使用者可以選擇不去回到原來的應用程式
,所以你的程式可能不會被重新啟用
。使用者可能會在起始介面重新啟動應用程式(而不是通過返回鍵),這會啟動程式的一個新執行個體
。這就是Launching事件還是Activated事件的問題。或者使用者啟動了若干個應用程式,這會使處於墓碑狀態的應用程式在回退棧中的位置越來越靠下以至於使用返回鍵無法到達。在此種情況下,你需要將你想要恢複的任何資料儲存下來。當然是否在程式中存取這些資料,這完全取決於你和你的工作職責。同時這也是我們下一篇文章的主題。現在我們來看看下面的圖,來自Windows Phone開發文檔
;這應該有助於你理解不同事件之間的關係。
現在,你應該理解Windows Phone應用程式中所涉及的——Launching, Deactivated, Closing和Activated事件的含義和功能了。不過這僅是剛剛開始,因為我們還有很多額外的話題需要討論從而透徹的理解執行模型以及如何在你的程式中充分利用它。在下篇文章中,你將學習如何將你的頁面狀態資訊儲存下來到以及在何種情境下需要儲存和載入這些資料。
範例程式碼可以 在此下載
此下載。
Windows Phone 7 開發人員訓練套件
包含了一個專門對於 Windows Phone 應用程式生命週期
的完整的實驗。
MSDN 文檔中還包含一個主題Windows Phone 執行模型概述
。
查看原文。
翻譯本文目的為學習交流,著作權為原作者所有。