天天看點

Windows Phone開發(3):棋子未動,先觀全局

在進行WP開發之前,與其它開發技術一樣,我們需要簡單了解一個WP應用序的生命周期,我們不一定要深入了解,但至少要知道在應用程式生命周期内的每一階段,我們應當做什麼,不推薦哪些操作等,這也是為了讓我們開發出更高性能,更優秀的應用程式打下堅實的基礎。

下圖是官方給出的WP應用程式執行模型圖。

Windows Phone開發(3):棋子未動,先觀全局

在上圖中,我們要注意以下四個事件:

1、Launching 事件。

說白了,就是應用程式剛啟動時觸發的事件,由于這個事件的一點特殊性,盡量不要在該事件處理程式中做大量的操作,比如比較耗時間的作業,為什麼呢?你想想,如果你的某個操作需要消耗大量時間的話,那麼,你肯定會發現,程式啟動的速度很慢,這樣一來,使用者會很不爽,使用者體驗就大打折扣。

2、Activated事件。

應用程式被激活時觸發,例如,我的程式上面有一個按鈕,使用者點選後打開發短信的“視窗”,當使用者發送完短信後,發短信的頁面就關閉,這時候,我們的應用程式又從背景程式變為前台程式了,Activated事件将觸發,注意的是,第一次啟動程式時是不觸發該事件的。

3、Deactivated事件。

與Activated事件相對,比如上面舉的例子,當我在程式上點選按鈕時,發送短信的頁面将啟動,這時候,目前應用程式就被前面的發短信的頁面擋住了,也就是說,目前程式被發送到背景,這個時刻就觸發了Deactivated事件。不過,如果應用程式将關閉,該事件不觸發。

4、Closing事件。

從字面意思就猜到該事件在啥時候發生了。對,當應用程式關閉時發生,但在應用程在導航中被發送到背景時不發生,比如剛才說的打開發短信的頁面後,雖然程式被發送到背景了,但由于它仍在運作,沒有退出,是以這個時候不觸發。但如果我從“開始”或桌面磁磚中啟動程式後,然後再通過“傳回”鍵回到桌面,這個時候因為程式會退出,是以該事件觸發。

為了驗證這些事件是如何發生的,我們在app.xaml.cs檔案中,分别為這幾個事件寫下調試輸出代碼。

然後,我們運作程式,當首頁面出現後,點選模拟器上的“傳回”鍵把程式關閉。

這時候,我們再去看一下“輸出”視窗。

Windows Phone開發(3):棋子未動,先觀全局

通過這個實驗,我們發現Activated事件和Deactivated事件未被觸發,為什麼?自己思考吧。

下面,我們在頁面中放一個按鈕,點選按鈕後,打開發送短信的頁面。

編寫單擊事件代碼。

按F5運作,再點選按鈕,打開發短信頁面。

Windows Phone開發(3):棋子未動,先觀全局

看看“輸出”視窗,這時候,就看到Deactivated事件發生了,因為程式還沒有退出,隻是被放到背景。

Windows Phone開發(3):棋子未動,先觀全局

接着,點選模拟器的“傳回”,退回到我們的程式。再看看輸出視窗。

Windows Phone開發(3):棋子未動,先觀全局

這個時候,Activated事件就發生了。

OK,今天的牛皮就吹到這裡吧。

繼續閱讀