成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談Windows Phone應(yīng)用程序生命周期

移動(dòng)開發(fā)
WP7應(yīng)用程序的生命周期指的是一個(gè)應(yīng)用程序在啟動(dòng)、關(guān)閉、墓碑化、休眠(7.1更新)或運(yùn)行中的各種狀態(tài)和他們之間的關(guān)系。

WP7應(yīng)用程序的生命周期指的是一個(gè)應(yīng)用程序在啟動(dòng)、關(guān)閉、墓碑化、休眠(7.1更新)或運(yùn)行中的各種狀態(tài)和他們之間的關(guān)系。

在WP7.0時(shí)代是不支持多任務(wù)的,只有墓碑化處理----由開發(fā)者保存應(yīng)用程序當(dāng)前需要保存的部分狀態(tài),在回退的時(shí)候?qū)λ4娴倪@些狀態(tài)進(jìn)行恢復(fù),這樣來達(dá)到使用戶感覺不到程序被關(guān)閉的體驗(yàn)。其實(shí)在墓碑化的過程中,應(yīng)用程序已經(jīng)被殺死,只由開發(fā)者保存了部分狀態(tài)在隔離存儲(chǔ)空間或內(nèi)存中(回退棧信息)。到了WP7.1時(shí),加入了;另外一個(gè)概念:休眠,也就有了現(xiàn)在的偽多任務(wù)。

休眠狀態(tài)是當(dāng)我們?cè)诔绦蛑悬c(diǎn)擊Win鍵進(jìn)入到主界面,或者是在程序中使用了啟動(dòng)器和選擇器啟動(dòng)了另一個(gè)程序時(shí)會(huì)發(fā)生。休眠狀態(tài)時(shí),程序停止運(yùn)行(和墓碑相同),但程序還是存在于內(nèi)存中(和墓碑不同)。當(dāng)恢復(fù)這個(gè)程序時(shí),就不需要?jiǎng)?chuàng)建一個(gè)新的實(shí)例(墓碑需要?jiǎng)?chuàng)建新實(shí)例)。這樣就加快了程序恢復(fù)和切換的速度。而且從休眠狀態(tài)恢復(fù)時(shí)我們不需要去恢復(fù)數(shù)據(jù)。在WP7.1中,我們可以長(zhǎng)按Back按鈕,出現(xiàn)程序列表,然后選擇要前臺(tái)執(zhí)行的程序。休眠狀態(tài)程序存在于內(nèi)存中會(huì)占用部分資源,當(dāng)前臺(tái)程序運(yùn)行時(shí)內(nèi)存不夠或程序不能流暢運(yùn)行時(shí),系統(tǒng)會(huì)自動(dòng)將部分休眠狀態(tài)程序轉(zhuǎn)化為墓碑狀態(tài)。在內(nèi)存足夠并且前臺(tái)程序能夠流暢運(yùn)行時(shí)對(duì)休眠狀態(tài)程序的個(gè)數(shù)也是有限制的,最多只能同時(shí)存在5個(gè)休眠程序,超過5個(gè)會(huì)自動(dòng)將前面的程序轉(zhuǎn)化為墓碑狀態(tài)。

WP7中只有BACK一種方法可以退出程序,微軟沒有提供在程序中EXIT的代碼(只有NavigationService.GoBack())。我們的程序在恢復(fù)時(shí)可能是從休眠或者墓碑兩種狀態(tài)中的一種來恢復(fù),當(dāng)從休眠狀態(tài)恢復(fù)時(shí),我們不需要恢復(fù)保存的數(shù)據(jù),從墓碑狀態(tài)恢復(fù)時(shí),需要恢復(fù)保存的數(shù)據(jù)。WP7.1為我們提供了IsApplicationInstancePreserved參數(shù)來判斷程序是從休眠狀態(tài)還是墓碑狀態(tài)恢復(fù)的(后面我們會(huì)通過代碼來描述),有了這個(gè)參數(shù)我們就可以判斷什么時(shí)候恢復(fù)數(shù)據(jù),什么時(shí)候不需要恢復(fù)數(shù)據(jù)。

那么我們通過代碼怎么來實(shí)現(xiàn)數(shù)據(jù)的保存和恢復(fù),什么時(shí)候來保存和回復(fù)呢?我們主要用到了下面6個(gè)函數(shù):

App.xaml.cs:Application_Launching

App.xaml.cs:Application_Closing

App.xaml.cs:Application_Deactivated

App.xaml.cs:Application_Activated

Page.cs:OnNavigationFrom

Page.cs:OnNavigationTo

Application_Launching方法在程序啟動(dòng)時(shí)調(diào)用,在程序從休眠或墓碑狀態(tài)恢復(fù)時(shí)不調(diào)用,我們可以用這個(gè)函數(shù)來加載一些耗時(shí)時(shí)間極短的信息(比如一些***的配置信息)以免造成用戶體驗(yàn)差。

  1. private void Application_Launching(object sender, LaunchingEventArgs e)  
  2.         {  
  3.             using (IsolatedStorageFile Iso = IsolatedStorageFile.GetUserStoreForApplication())  
  4.             {  
  5.                 if(IsolatedStorageSettings.ApplicationSettings.Contains(IsoSetting1))  
  6.                 {  
  7.                     IsoContext = IsolatedStorageSettings.ApplicationSettings[IsoSetting1] as string;  
  8.                 }  
  9.             }  
  10.         } 

 

Application_Closing方法在程序關(guān)閉時(shí)調(diào)用,在程序從休眠或墓碑狀態(tài)恢復(fù)時(shí)不調(diào)用,我們可以用這個(gè)函數(shù)來保存一些信息。

  1. private void Application_Closing(object sender, ClosingEventArgs e)  
  2.         {  
  3.             using (IsolatedStorageFile Iso = IsolatedStorageFile.GetUserStoreForApplication())  
  4.             {  
  5.                 IsolatedStorageSettings.ApplicationSettings[IsoSetting1] = IsoContext;  
  6.             }  
  7.         } 

 

Application_Deactivated方法在程序失去激活時(shí)調(diào)用,在程序關(guān)閉時(shí)不調(diào)用,我們可以使用這個(gè)方法來保存當(dāng)程序進(jìn)入墓碑化時(shí)需要保存的一些程序級(jí)信息,通過Application的state來保存。

  1. private void Application_Deactivated(object sender, DeactivatedEventArgs e)  
  2.         {  
  3.             PhoneApplicationService.Current.State[IsoSetting1] = IsoContext;  
  4.         } 

 

Application_Activated方法在程序被重新激活時(shí)(即從墓碑或休眠狀態(tài)激活時(shí))調(diào)用,在程序啟動(dòng)時(shí)不調(diào)用。我們可以使用這個(gè)方法來恢復(fù)程序從墓碑化激活時(shí)需要恢復(fù)的一些程序級(jí)信息,通過IsApplicationInstancePreserved參數(shù)來判斷程序是通過墓碑還是休眠狀態(tài)來恢復(fù)的。

  1. private void Application_Activated(object sender, ActivatedEventArgs e)  
  2.         {  
  3.             if (!e.IsApplicationInstancePreserved)  
  4.             {  
  5.                 IsoContext = PhoneApplicationService.Current.State[IsoSetting1] as string;  
  6.             }  
  7.         } 

OnNavigationFrom方法在離開該頁(yè)面時(shí)調(diào)用,我們可以用這個(gè)方法來保存一些頁(yè)面級(jí)的信息。通過Page的state來保存。

  1. protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)  
  2.         {  
  3.             base.OnNavigatedFrom(e);  
  4.             if (e.NavigationMode != System.Windows.Navigation.NavigationMode.Back)  
  5.             {  
  6.                 State[numsetting1] = num;   
  7.             }  
  8.         } 

 

OnNavigatedTo方法在進(jìn)入該頁(yè)面時(shí)調(diào)用,我們可以用這個(gè)方法來恢復(fù)一些頁(yè)面級(jí)的信息。

  1. protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)  
  2.         {  
  3.             base.OnNavigatedTo(e);  
  4.             if (e.NavigationMode != System.Windows.Navigation.NavigationMode.New)  
  5.             {  
  6.                 if (State.ContainsKey(numsetting))  
  7.                 {  
  8.                     num = State[numsetting] as string;  
  9.                 }  
  10.             }  
  11.         } 

通過上面的代碼,我們對(duì)應(yīng)用程序的生命周期有了一定的了解,下面我們來簡(jiǎn)單總結(jié)一下應(yīng)用程序生命周期部分流程。

***種:程序啟動(dòng)(Application_Launching)----進(jìn)入主頁(yè)面(OnNavigatedTo)----離開主頁(yè)面(OnNavigationFrom)----程序直接通過BACK鍵關(guān)閉(Application_Closing)

第二種:程序啟動(dòng)(Application_Launching)----進(jìn)入主頁(yè)面(OnNavigatedTo)----離開主頁(yè)面(OnNavigationFrom)----進(jìn)入休眠狀態(tài)(Application_Deactivated)----從休眠中恢復(fù)(Application_Activated)----進(jìn)入主頁(yè)面(OnNavigatedTo)----離開主頁(yè)面(OnNavigationFrom)----程序直接通過BACK鍵關(guān)閉(Application_Closing)

第三種:程序啟動(dòng)(Application_Launching)----進(jìn)入主頁(yè)面(OnNavigatedTo)----離開主頁(yè)面(OnNavigationFrom)----進(jìn)入休眠狀態(tài)(Application_Deactivated)----進(jìn)入墓碑狀態(tài)(Application_Deactivated)----從墓碑中恢復(fù)(Application_Activated)----進(jìn)入主頁(yè)面(OnNavigatedTo)----離開主頁(yè)面(OnNavigationFrom)----程序直接通過BACK鍵關(guān)閉(Application_Closing)

原文鏈接:http://www.cnblogs.com/Kingly/archive/2012/02/22/2363393.html

責(zé)任編輯:王曉東 來源: 博客
相關(guān)推薦

2013-07-31 14:50:32

Windows PhoWP應(yīng)用程序生命周期

2014-07-16 13:39:30

Windows Pho

2009-06-24 10:34:39

JSF生命周期JSF應(yīng)用程序

2011-07-20 15:58:58

iPhone 應(yīng)用程序 生命周期

2015-07-09 15:42:48

ios應(yīng)用生命周期

2013-09-26 11:20:34

Informatica

2011-08-10 16:50:10

iPhone生命周期

2014-07-11 11:09:10

App應(yīng)用程序生命周期

2014-02-24 10:50:32

DevOps云應(yīng)用

2023-12-21 08:00:00

ChatGPT人工智能大型語言模型

2012-08-16 09:38:38

ASP.NET

2014-09-28 11:28:02

Android應(yīng)用程序生命周期

2010-08-01 15:29:04

AndroidDalvik

2025-04-28 01:22:00

2009-06-18 13:32:39

Java線程生命周期

2010-04-02 09:02:02

ASP.NET MVC

2013-07-30 13:38:27

Windows PhoWindows Pho

2012-06-20 10:29:16

敏捷開發(fā)

2009-08-04 16:05:15

ASP.NET頁(yè)面生命

2011-10-25 10:24:03

Windows Pho
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲成人一区二区三区 | 日韩三级在线 | 亚洲国产片 | 韩国av一区二区 | 国产91丝袜在线播放 | 国产高清一区二区三区 | 精品久久久久久久久久久久 | 久久久久一区二区三区 | 国产精品久久久久久久久久久久午夜片 | 久久久久久久久久久蜜桃 | 国产精品免费观看 | 成年人免费看的视频 | 淫片专区 | 亚洲一区二区三区在线 | 国产剧情一区二区三区 | 欧美一区二区三 | 动漫www.被爆羞羞av44 | 最新av中文字幕 | 日韩av在线播 | 欧美aⅴ| 中文字幕精品一区二区三区精品 | 一区视频在线 | 亚洲视频手机在线 | 亚洲综合一区二区三区 | 日韩有码在线观看 | 久久久久久免费看 | 午夜视频在线播放 | 亚州精品天堂中文字幕 | 久久精品二区 | 91久久国产 | 国产精品免费高清 | 国产色99精品9i | 久久精品亚洲精品国产欧美 | 色综合久久久 | 国产精品视频播放 | 久久福利 | 夜夜爽99久久国产综合精品女不卡 | 国产午夜精品久久久久 | 国产在线看片 | 精品国产乱码久久久久久a丨 | 日韩美女爱爱 |