新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Windows Phone開發(fā)(3):棋子未動(dòng),先觀全局

        Windows Phone開發(fā)(3):棋子未動(dòng),先觀全局

        作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò) 收藏

        在進(jìn)行WP開發(fā)之前,與其它開發(fā)技術(shù)一樣,我們需要簡(jiǎn)單了解一個(gè)WP應(yīng)用序的生命周期,我們不一定要深入了解,但至少要知道在應(yīng)用程序生命周期內(nèi)的每一階段,我們應(yīng)當(dāng)做什么,不推薦哪些操作等,這也是為了讓我們開發(fā)出更高性能,更優(yōu)秀的應(yīng)用程序打下堅(jiān)實(shí)的基礎(chǔ)。

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

        下圖是官方給出的WP應(yīng)用程序執(zhí)行模型圖。

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

        1、Launching 事件。

        說(shuō)白了,就是應(yīng)用程序剛啟動(dòng)時(shí)觸發(fā)的事件,由于這個(gè)事件的一點(diǎn)特殊性,盡量不要在該事件處理程序中做大量的操作,比如比較耗時(shí)間的作業(yè),為什么呢?你想想,如果你的某個(gè)操作需要消耗大量時(shí)間的話,那么,你肯定會(huì)發(fā)現(xiàn),程序啟動(dòng)的速度很慢,這樣一來(lái),用戶會(huì)很不爽,用戶體驗(yàn)就大打折扣。

        2、Activated事件。

        應(yīng)用程序被激活時(shí)觸發(fā),例如,我的程序上面有一個(gè)按鈕,用戶點(diǎn)擊后打開發(fā)短信的“窗口”,當(dāng)用戶發(fā)送完短信后,發(fā)短信的頁(yè)面就關(guān)閉,這時(shí)候,我們的應(yīng)用程序又從后臺(tái)程序變?yōu)榍芭_(tái)程序了,Activated事件將觸發(fā),注意的是,第一次啟動(dòng)程序時(shí)是不觸發(fā)該事件的。

        3、Deactivated事件。

        與Activated事件相對(duì),比如上面舉的例子,當(dāng)我在程序上點(diǎn)擊按鈕時(shí),發(fā)送短信的頁(yè)面將啟動(dòng),這時(shí)候,當(dāng)前應(yīng)用程序就被前面的發(fā)短信的頁(yè)面擋住了,也就是說(shuō),當(dāng)前程序被發(fā)送到后臺(tái),這個(gè)時(shí)刻就觸發(fā)了Deactivated事件。不過,如果應(yīng)用程序?qū)㈥P(guān)閉,該事件不觸發(fā)。

        4、Closing事件。

        從字面意思就猜到該事件在啥時(shí)候發(fā)生了。對(duì),當(dāng)應(yīng)用程序關(guān)閉時(shí)發(fā)生,但在應(yīng)用程在導(dǎo)航中被發(fā)送到后臺(tái)時(shí)不發(fā)生,比如剛才說(shuō)的打開發(fā)短信的頁(yè)面后,雖然程序被發(fā)送到后臺(tái)了,但由于它仍在運(yùn)行,沒有退出,所以這個(gè)時(shí)候不觸發(fā)。但如果我從“開始”或桌面磁磚中啟動(dòng)程序后,然后再通過“返回”鍵回到桌面,這個(gè)時(shí)候因?yàn)槌绦驎?huì)退出,所以該事件觸發(fā)。

        為了驗(yàn)證這些事件是如何發(fā)生的,我們?cè)赼pp.xaml.cs文件中,分別為這幾個(gè)事件寫下調(diào)試輸出代碼。

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

        然后,我們運(yùn)行程序,當(dāng)主頁(yè)面出現(xiàn)后,點(diǎn)擊模擬器上的“返回”鍵把程序關(guān)閉。

        這時(shí)候,我們?cè)偃タ匆幌?ldquo;輸出”窗口。

        通過這個(gè)實(shí)驗(yàn),我們發(fā)現(xiàn)Activated事件和Deactivated事件未被觸發(fā),為什么?自己思考吧。

        下面,我們?cè)陧?yè)面中放一個(gè)按鈕,點(diǎn)擊按鈕后,打開發(fā)送短信的頁(yè)面。

        [html]
        1. !--ContentPanel-在此處放置其他內(nèi)容-->
        2. Gridx:Name=ContentPanelGrid.Row=1Margin=12,0,12,0>
        3. ButtonVerticalAlignment=Top
        4. HorizontalAlignment=Center
        5. Content=請(qǐng)點(diǎn)擊我
        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=你好啊,今天中午請(qǐng)我吃牛肉炒飯嗎?;
        6. sms.Show();
        7. }

        按F5運(yùn)行,再點(diǎn)擊按鈕,打開發(fā)短信頁(yè)面。

        看看“輸出”窗口,這時(shí)候,就看到Deactivated事件發(fā)生了,因?yàn)槌绦蜻€沒有退出,只是被放到后臺(tái)。

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

        這個(gè)時(shí)候,Activated事件就發(fā)生了。

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



        關(guān)鍵詞: Windows Phone

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 沛县| 聂拉木县| 定日县| 和平区| 定结县| 宜都市| 望都县| 张家港市| 江口县| 观塘区| 新绛县| 永寿县| 石楼县| 军事| 朝阳县| 舒城县| 虎林市| 潜山县| 平湖市| 公安县| 南平市| 万载县| 逊克县| 晋江市| 绍兴县| 买车| 五指山市| 永泰县| 姚安县| 富顺县| 泊头市| 恩平市| 普洱| 泗洪县| 乐至县| 略阳县| 阜城县| 建昌县| 韶关市| 项城市| 梁平县|