Windows Phone 執行模型概述

  Windows?Phone 執行模型控制在 Windows?Phone 上運行的應用程序的生命周期,該過程從啟動應用程序開始,直至應用程序終止。

  該執行模型旨在始終為最終用戶提供快速響應的體驗。為此,在任何給定時間內,Windows?Phone 僅允許一個應用程序在前臺運行。當應用程序不再運行于前臺時,操作系統將使應用程序進入休眠狀態。如果可用于前臺應用程序的設備內存不足,無法提供出色的用戶體驗,則操作系統將開始終止休眠的應用程序(首先終止最早使用的應用程序)。應用程序可以使用為其提供的編程框架在取消激活和重新激活時管理其狀態。這有助于創建一種在用戶看來應用程序保持單一實例的用戶體驗,即使應用程序已終止或已重新激活。

  該執行模型還為用戶提供了應用程序間一致的導航體驗。在 Windows?Phone 中,用戶可通過從已安裝程序列表或從“開始”中的磁貼啟動應用程序來向前導航,除此之外,還可以通過其他方式向前導航,如點按與應用程序相關的 Toast 通知。用戶還可以使用硬件“返回”按鈕向后導航各個運行應用程序的頁面,或者向后導航先前運行的應用程序的堆棧。Windows?Phone?7.5 添加了通過按住硬件“返回”按鈕來切換到先前運行的應用程序的功能。

?

  Windows Phone 應用程序生命周期

  下圖演示了 Windows?Phone 應用程序的生命周期。在該圖中,圓圈表示應用程序的狀態。矩形顯示應用程序應管理其狀態的應用程序級別或頁面級別的事件。

   ?

?

? ? ? ? ?

  Launching 事件

  launchings事件在用戶從已安裝程序列表或從“開始”中的磁貼或通過其他方式(如點按與應用程序相關的 Toast 通知或從“Photos Extras”菜單中選擇應用程序)啟動新的應用程序實例時引發。當以此方式啟動應用程序時,它應向用戶顯示新實例,而不是先前實例的延續。為了幫助確保應用程序快速加載,應在該事件的處理程序中執行盡可能少的代碼。特別是,避免文件和網絡操作等資源密集型任務。您應在應用程序加載之后,在后臺線程中執行這些任務以便實現最佳的用戶體驗。

  運行

  啟動之后,應用程序處于運行狀態。在用戶向前導航、離開應用程序或向后導航到第一個應用程序頁面之前,應用程序程序將持續運行。Windows?Phone 應用程序不應為用戶提供退出應用程序的機制。當手機的鎖定屏幕功能啟動時,應用程序將保持運行狀態,除非您已禁用應用程序空閑檢測。有關更多信息,請參閱?Windows Phone 空閑檢測。

  OnNavigatedFrom 方法

  當用戶導航離開應用程序頁面時,將會調用?OnNavigatedFrom(NavigationEventArgs)?方法。這可能是由應用程序中的普通頁面導航導致。當取消激活應用程序時也會調用該方法,下一節將對此進行討論。每當調用該方法時,應用程序都應存儲頁面的狀態,以便在用戶返回到頁面時可以還原應用程序。向后導航除外。可以使用?NavigationMode?屬性來確定導航是否為向后導航,若為向后導航,則無需保存狀態,因為頁面將在下次訪問時重新。在某些情況下,您可能希望將狀態同時保存在?OnNavigatingFrom(NavigatingCancelEventArgs)?方法中。尤其是在存儲?MediaElement?控件的狀態時,您將需要執行此操作。

  Deactivated 事件

  當用戶向前導航、導航出您的應用程序、按“開始”按鈕或啟動其他應用程序時,都將會引發?Deactivated?事件。如果您的應用程序啟動選擇器,也會引發?Deactivated?事件。有關選擇器的更多信息,請參閱?Windows Phone 啟動器和選擇器概述。當設備的鎖定屏幕功能啟動時,也會引發該事件,除非已禁用應用程序空閑檢測。

  在?Deactivated?事件的處理程序中,您的應用程序應保存任何應用程序狀態,以便將來還原。Windows?Phone 應用程序隨?State?對象一起提供,后者是可以用來存儲應用程序狀態的字典。如果應用程序在被邏輯刪除后重新激活,則將使用您保存在?Deactivated?中的數據填充該狀態字典。由于內存中存在該數據,您可以用它來還原狀態,而無需資源密集型的文件操作。

  在調用?Deactivated?后,應用程序可能會被完全終止。當應用程序終止時,其狀態將不保留。因此,還應在?Deactivated?事件期間,將應用程序實例間應保留的所有未保存狀態存儲到獨立存儲中。

  休眠

  當用戶向前導航或導航出應用程序時,引發?Deactivated?事件后,操作系統將嘗試使應用程序置于休眠狀態。在此狀態下,應用程序的所有線程均將停止,并且不進行任何處理操作,但應用程序仍完好地保留在內存中。如果從該狀態中重新激活應用程序,應用程序無需重新創建任何狀態,因為狀態已保留。

  如果在應用程序進入休眠狀態后啟動新的應用程序,這些應用程序需要更多的內存才能提供出色的用戶體驗,操作系統將開始邏輯刪除休眠的應用程序以釋放內存。

  已邏輯刪除

  邏輯刪除的應用程序已終止,但該應用程序的導航狀態相關信息和?Deactivated?期間由應用程序填充的狀態字典將保留下來。設備每次最多可維護五個應用程序的邏輯刪除信息。如果在邏輯刪除應用程序之后,用戶向后導航至應用程序,則應用程序將會重新啟動并使用保留的數據還原狀態。否則,將只是終止應用程序。

  Activated 事件

  當用戶返回到休眠或邏輯刪除的應用程序時,將調用?Activated?事件。應用程序應檢查事件參數的?IsApplicationInstancePreserved?屬性,以確定應用程序是從休眠狀態返回,還是從邏輯刪除狀態返回。如果IsApplicationInstancePreserved?為 true,則應用程序之前處于休眠狀態,狀態已由操作系統自動保留。若為 false,則應用程序之前已被邏輯刪除,應用程序應使用狀態字典來還原應用程序狀態。在執行?Activated?事件處理程序期間,應用程序不應執行資源密集型任務(例如,從獨立存儲或網絡資源加載內容),因為這會增加應用程序恢復所用的時間。而是應在加載應用程序之后,在后臺線程中執行這些操作。

  OnNavigatedTo 方法

  當用戶導航到頁面時,即會調用?OnNavigatedTo(NavigationEventArgs)?方法。這包括當應用程序第一次啟動時、用戶在應用程序的頁面之間進行導航時以及在應用程序休眠或被邏輯刪除后重新啟動時。在此方法中,應用程序應檢查是否頁面為新實例。若不是新實例,則無需還原。若頁面為新實例,并且在頁面的狀態字典中存在數據,則應使用該數據來還原頁面 UI 的狀態。

  Closing 事件

  當用戶向后導航到應用程序的第一頁時,即會引發?Closing?事件。在這種情況下,應用程序將終止,并且不會保存狀態。在?Closing?事件處理程序中,您的應用程序可以保存應跨實例保留的數據。應用程序完成所有應用程序和頁面導航事件的時間被限定為 10 秒。若超出此限度,則應用程序將終止。因此,最好保存整個應用程序生存期的持續狀態,避免在?Closing?事件處理程序中執行大量的文件 I/O 操作。

?

    執行模型事件和應用程序操作摘要

  下表是應用程序生命周期內所發生事件和應用程序應針對每個事件執行的操作的簡短摘要。

事件或方法

應用程序操作

Launching 事件

執行非常少量的代碼。不要執行資源密集型操作,例如,訪問獨立存儲。

OnNavigatedFrom 方法

如果不是向后導航,則將 UI 狀態保存到?State?字典。

Deactivated 事件

當應用程序被邏輯刪除時,將應用程序狀態保存到?State。同時,在應用程序終止時,將持續狀態保存到獨立存儲。當應用程序進入休眠狀態時,不要銷毀內存中應用程序的狀態。

Activated 事件

檢查?IsApplicationInstancePreserved。若為 true,則不執行任何操作。若為 false,則使用?State?中的數據還原應用程序狀態。

OnNavigatedTo 方法

檢查頁面是否為新實例。若不是,則狀態自動保持。否則,如果?State?中存在數據,則使用該數據還原 UI。

Closing 事件

將持續應用程序數據保存到獨立存儲。

警告說明警告:

通過本節所述的事件,您可以在應用程序進入和離開前臺時保存和還原狀態。但是,推薦的做法是在狀態數據發生更改時立即保存狀態數據。例如,當收到來自網絡的某個 Web 請求時,可以立即將其結果保存到磁盤和/或應用程序狀態字典中。您不應等到?Deactivated?事件發生后才存儲此數據。請記住,所有應用程序生命周期事件都強制限定應用程序在 10 秒鐘的時間內完成所有任務。

轉載于:https://www.cnblogs.com/Dotaer/p/3580558.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258901.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258901.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258901.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

halcon/c++接口基礎 之 構造函數與Halcon算子

Halcon/C提供了構造函數,主要基于適合的Halcon算子。比如說HImage和HBarCode基于read_image and create_bar_code_model。 請注意當前的Halcon版本針對不同的算子構造函數的功能不同。如下我們介紹了一些最常用的Halcon算子,而一個完整的構造函數列表可…

Android Wifi簡單的梳理【轉】

本文轉載自:http://blog.csdn.net/gabbzang/article/details/10005411 代表一個已經配置過的網絡。包含網絡ID(networkId)、該網絡ID代表的網絡的BSSID和SSID、加密機制、密碼等信息。 WifiInfo: 代表一個正在建立或者已經建立的網絡連接。該網絡的BSSID…

fenby C語言 P30

int a[5]&#xff0c;*pa; int a[5],*p&a[0]; #include <stdio.h> int main(void){ int a[5],*pa,i; for(i0;i<5;i) { *p1; p; }pp-5;for(i0;i<5;i,p)printf("%d\n",*p);return 0;}轉載于:https://www.cnblogs.com/amiaojiang/p/4507114.html

bat自動輸入用戶名和密碼_「小白到大牛之路6」交換機后臺管理之重復輸入用戶名和密碼...

項目需求解決項目5中存在的問題&#xff1a;用戶名和密碼只能輸入一次。如果輸入錯誤&#xff0c;就沒有機會重新輸入。項目實現#include int main(void) {// 定義變量&#xff0c;用來表示用戶名和密碼char name[32];char password[16];//輸入用戶名和密碼while (1) {// 輸入用…

并行計算簡介

轉自&#xff1a;http://www.cnblogs.com/wasd/archive/2009/04/07/1430859.html 并行計算簡介 作者&#xff1a; Blaise Barney, 勞倫斯利弗莫爾國家實驗室 譯者&#xff1a;盧洋&#xff0c;同濟大學&#xff0c;2009年4月 原文地址&#xff1a;https://computing.llnl.gov/t…

開場 Live,分享點干貨——「深入了解 Node.js 包與模塊機制」

先放上 Live 地址&#xff1a; www.zhihu.com/lives/84274… 本次 Live 將深入剖析 Node.js 包與模塊機制&#xff0c;包括且不限于解析 Node.js 源碼、社區規范等。本人認為這是作為一個合格 Node.js 開發者哪怕是不深入也要了解的姿勢之一。 本次 Live 主要包括以下內容&…

halcon/c++接口基礎 之 析構函數和Halcon算子

所有的HALCON/C類都提供了默認的析構函數用來自動銷毀對應的內存。對于某些類&#xff0c;析構函數基于適合的算子&#xff1a; Windows: HWindow類的析構函數基于close_window關閉窗口。注意&#xff1a;算子本身不是析構器。你可以選擇調用CloseWindow關閉窗口&#xff0c;…

140字

跑男他們這一組做的游戲&#xff0c;首先按任務來 他們做的技術難度很高感覺。需要在android里面用flash我自己從來沒有接觸過。而且制作的難度也很大&#xff0c;反正就目前難度系數來說的話&#xff0c;可以秒殺我的DB天氣了。然后就是吐槽的也是我最不能忍的就是美化方面做得…

ios 上傳圖片到阿里云的oss_JEECG BOOT 上傳如何同時支持阿里OSS、Minio、本地存儲

Jeecg-Boot 提供了文件及圖片上傳功能&#xff0c;前兩個文件已介紹了MinIO和OSS配置&#xff0c;現在可根據需要選擇上傳方式。文件上傳接口(圖片/文件)在yml文件中可切換圖片/文件存儲方式訪問路徑上送參數說明在yml文件中可切換圖片/文件存儲方式local為本地存儲minio為使用…

halcon/c++接口基礎 之內存管理

所有的HALCON類&#xff0c;不僅僅HImage,HRegion,HTuple&#xff0c;HFramegrabber等等&#xff0c;還有面向過程的方法中使用的Hobject&#xff0c;都可以使用默認的析構器自動釋放內存。 &#xff08; see also section 2.4 “Destructors and Halcon Operators”)&#xf…

tomcat 禁用access.log

修改 server.xml 注釋掉,如: <!-- Access log processes all example.Documentation at: /docs/config/valve.htmlNote: The pattern used is equivalent to using pattern"common"<Valve className"org.apache.catalina.valves.AccessLogValve" dir…

bzoj 3505

3505: [Cqoi2014]數三角形 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 698 Solved: 424[Submit][Status][Discuss]Description 給定一個nxm的網格&#xff0c;請計算三點都在格點上的三角形共有多少個。下圖為4x4的網格上的一個三角形。 注意三角形的三點不能共線。 In…

python時間格式_python 格式化日期

常用的時間函數如下 獲取當前日期&#xff1a;time.time() 獲取元組形式的時間戳&#xff1a;time.local(time.time()) 格式化日期的函數(基于元組的形式進行格式化)&#xff1a; &#xff08;1&#xff09;time.asctime(time.local(time.time())) &#xff08;2&#xff09;ti…

halcon/c++接口基礎 之異常處理

關于運行錯誤&#xff0c;HALCON/C默認打印錯誤信息并且終止程序。然而在某些應用中&#xff0c;放寬這個法則可能更有用。比如&#xff0c;如果一個應用要求用戶交互式地指定一個圖像文件讀取&#xff0c;如果因為用戶不能拼錯文件名而終止程序的話&#xff0c;會很不方便。因…

DbEntry在Vs2012里的配置

dbentry官方的版本還不支持vs2012&#xff0c;要再vs2012中使用&#xff0c;必須做下調整 1&#xff1a;新建類庫項目&#xff0c;然后添加dbentry 的dll引用。 2&#xff1a;在建好的類庫項目中.csproj 新添加了類庫項目后&#xff0c;在他的項目文件.csproj用記事本打開&…

SVN學習(二)——SVN 提交、更新、解決沖突等操作步驟

1. 納入版本控制 ①新建文件abc.txt ②在文件上點右鍵 ③添加后文件圖標發生變化 2. 提交 ①使用TortoiseSVN可以提交具體某一個文件&#xff0c;或某一個目錄下的所有改變。方法就是在想要提交的項目下點右鍵&#xff0c;然后SVN Commit...&#xff0c;就可以看到如下界面 ②日…

dat文件打開亂碼_5.2 實戰1:解決在Linux下打開Windows漢字文本的亂碼問題

今天MK繼續來分享linux的學習文章&#xff0c;今天講的主要是實戰部分。1&#xff0e;實驗環境&#xff1a;CentOS 7.5 現在系統默認使用的語言是漢語。&#xff08;系統中必須安裝好中文包&#xff09;。2&#xff0e;在windows系統上編輯名字為“a此文件在windows下打開正常-…

整理:深度學習 vs 機器學習 vs 模式識別

發表于2015-03-24 22:58| 11934次閱讀| 來源個人博客| 26 條評論| 作者Tomasz Malisiewicz 模式識別深度學習機器學習數據科學家摘要&#xff1a;本文我們來關注下三個非常相關的概念&#xff08;深度學習、機器學習和模式識別&#xff09;&#xff0c;以及他們與2015年最熱門的…

halcon/c++接口基礎 之 HALCON圖像變量類

在HALCON/C中&#xff0c;HObject是一個基類&#xff0c;可以表示圖像變量。另外還有三種類繼承自HObject. Class HImage 處理圖像Class HRegion 處理區域Class HXLD 處理多邊形 Regions 一個region是圖像平面坐標點的集合。這樣一個區域不需要被連通&#xff0c;而且可能還…

新手求大神,有其他swit-case的思路寫這個程序么?

兩個程序: switch-case與if-else if的區別相同點:可以實現多分支結構;不同點:switch:一般只能用于等值比較.(可以進行范圍運算???---學會用switch計算范圍出爐的思路____待解決)if_else if:可以處理范圍計算. switch(變量) { case 變量: break; } switch括號中的"變量…