新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Windows Phone開發(3):棋子未動,先觀全局

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

        作者: 時間:2016-09-12 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/201609/303394.htm

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

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

        1、Launching 事件。

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

        2、Activated事件。

        應用程序被激活時觸發,例如,我的程序上面有一個按鈕,用戶點擊后打開發短信的“窗口”,當用戶發送完短信后,發短信的頁面就關閉,這時候,我們的應用程序又從后臺程序變為前臺程序了,Activated事件將觸發,注意的是,第一次啟動程序時是不觸發該事件的。

        3、Deactivated事件。

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

        4、Closing事件。

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

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

        [csharp]
        1. //應用程序啟動(例如,從“開始”菜單啟動)時執行的代碼
        2. //此代碼在重新激活應用程序時不執行;
        3. privatevoidApplication_Launching(objectsender,LaunchingEventArgse)
        4. {
        5. System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString()+-應用程序首次啟動。);
        6. }
        7. //激活應用程序(置于前臺)時執行的代碼
        8. //此代碼在首次啟動應用程序時不執行
        9. privatevoidApplication_Activated(objectsender,ActivatedEventArgse)
        10. {
        11. System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString()+-應用程序被激活。);
        12. }
        13. //停用應用程序(發送到后臺)時執行的代碼
        14. //此代碼在應用程序關閉時不執行
        15. privatevoidApplication_Deactivated(objectsender,DeactivatedEventArgse)
        16. {
        17. System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString()+-應用程序休眠。);
        18. }
        19. //應用程序關閉(例如,用戶點擊“后退”)時執行的代碼
        20. //此代碼在停用應用程序時不執行
        21. privatevoidApplication_Closing(objectsender,ClosingEventArgse)
        22. {
        23. System.Diagnostics.Debug.WriteLine(DateTime.Now.ToShortTimeString()+-應用程序關閉。);
        24. }

        然后,我們運行程序,當主頁面出現后,點擊模擬器上的“返回”鍵把程序關閉。

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

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

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

        [html]
        1. !--ContentPanel-在此處放置其他內容-->
        2. Gridx:Name=ContentPanelGrid.Row=1Margin=12,0,12,0>
        3. ButtonVerticalAlignment=Top
        4. HorizontalAlignment=Center
        5. Content=請點擊我
        6. FontSize=64
        7. Click=Button_Click
        8. Margin=0,12,0,0/>
        9. /Grid>

        編寫單擊事件代碼。

        [csharp]
        1. privatevoidButton_Click(objectsender,RoutedEventArgse)
        2. {
        3. Microsoft.Phone.Tasks.SmsComposeTasksms=newMicrosoft.Phone.Tasks.SmsComposeTask();
        4. sms.To=13672265138;
        5. sms.Body=你好啊,今天中午請我吃牛肉炒飯嗎?;
        6. sms.Show();
        7. }

        按F5運行,再點擊按鈕,打開發短信頁面。

        看看“輸出”窗口,這時候,就看到Deactivated事件發生了,因為程序還沒有退出,只是被放到后臺。

        接著,點擊模擬器的“返回”,退回到我們的程序。再看看輸出窗口。

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

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



        關鍵詞: Windows Phone

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 公安县| 闵行区| 芦山县| 桐乡市| 五河县| 迁西县| 梁河县| 惠安县| 固安县| 潢川县| 忻城县| 西安市| 乳源| 嘉义市| 沛县| 汤原县| 红桥区| 托克逊县| 娱乐| 沂南县| 汤阴县| 巫溪县| 马鞍山市| 双鸭山市| 香港| 沭阳县| 固阳县| 特克斯县| 昭平县| 翼城县| 隆德县| 天全县| 息烽县| 台安县| 墨江| 赣榆县| 咸丰县| 酒泉市| 郸城县| 巫山县| 白水县|