專利名稱:移動(dòng)設(shè)備上的休眠后臺(tái)應(yīng)用的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及將應(yīng)用從正在運(yùn)行的狀態(tài)移到休眠狀態(tài)。
背景技術(shù):
在當(dāng)代移動(dòng)設(shè)備上,如果應(yīng)用正在運(yùn)行并且隨后在前臺(tái)被另ー應(yīng)用或體驗(yàn)所替換,則該第一應(yīng)用被停用并且該應(yīng)用的進(jìn)程被操作系統(tǒng)終止。例如,如果用戶按下開始(Start)按鈕或如果設(shè)備超時(shí)造成鎖屏,則應(yīng)用可被停用。在一個(gè)系統(tǒng)中,用戶可以返回到該應(yīng)用以從用戶離開之處繼續(xù)應(yīng)用任務(wù)/體驗(yàn)。然而,在返回到被操作系統(tǒng)終止的應(yīng)用時(shí),用戶需要等待設(shè)備應(yīng)用框架初始化并等待應(yīng)用本身加載所保存的狀態(tài)且需要恢復(fù)先前體驗(yàn)。以此方式恢復(fù)看起來相對(duì)緩慢并且因而提供有點(diǎn)不合需要的用戶體驗(yàn)。
發(fā)明內(nèi)容
提供本發(fā)明內(nèi)容以便以簡(jiǎn)化形式介紹將在以下的具體實(shí)施方式
中進(jìn)ー步描述的ー些代表性概念。本發(fā)明內(nèi)容不g在標(biāo)識(shí)出所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在以限制所要求保護(hù)的主題的范圍的任何方式來使用。簡(jiǎn)言之,本文描述的主題的各方面涉及將應(yīng)用從正在運(yùn)行的狀態(tài)移到休眠狀態(tài)的技術(shù),在該休眠狀態(tài)中該應(yīng)用程序進(jìn)程被保留在存儲(chǔ)器中。此外,狀態(tài)數(shù)據(jù)和執(zhí)行上下文信息與該應(yīng)用相關(guān)聯(lián)地維護(hù),這允許例如以快速、高效的方式將該應(yīng)用激活到正在運(yùn)行的狀態(tài)。在ー個(gè)方面,將應(yīng)用從正在運(yùn)行的狀態(tài)移到休眠狀態(tài)包括暫停一段時(shí)間以允許該應(yīng)用為休眠狀態(tài)作準(zhǔn)備,例如持久存儲(chǔ)來自存儲(chǔ)器的數(shù)據(jù)、關(guān)閉任何打開的文件,等等。在ー個(gè)方面,將前臺(tái)應(yīng)用從正在運(yùn)行的狀態(tài)移到休眠狀態(tài)包括從該應(yīng)用分離至少ー個(gè)資源,暫停ー資源提供給該應(yīng)用的至少ー個(gè)更新通知,取消至少ー個(gè)可取消的請(qǐng)求,暫停至少ー個(gè)不可取消的請(qǐng)求,停止至少ー個(gè)線程,和/或釋放至少ー個(gè)應(yīng)用資源(例如,分配給該應(yīng)用的存儲(chǔ)器)。為了將該應(yīng)用從休眠狀態(tài)激活回到處于正在運(yùn)行的狀態(tài)的前臺(tái)應(yīng)用,訪問狀態(tài)數(shù)據(jù)和執(zhí)行上下文信息并且將至少ー個(gè)資源配屬給該應(yīng)用。還描述了恢復(fù)由ー資源提供給該應(yīng)用的至少ー個(gè)更新通知,運(yùn)行至少ー個(gè)可取消請(qǐng)求的故障路徑,恢復(fù)至少ー個(gè)不可取消的請(qǐng)求,激發(fā)至少ー個(gè)通知,重新創(chuàng)建恢復(fù)至少ー個(gè)線程,和/或重新創(chuàng)建至少ー個(gè)應(yīng)用資源。在ー個(gè)方面,資源監(jiān)視器被配置成評(píng)估當(dāng)應(yīng)用處于休眠狀態(tài)時(shí)是否正在使用至少一個(gè)資源(例如,CPU)超出所允許的閾值。如果是,則外殼被配置成將該應(yīng)用從休眠狀態(tài)移到另ー狀態(tài),在該另ー狀態(tài)中,該應(yīng)用的進(jìn)程不被保留在存儲(chǔ)器中。結(jié)合附圖閱讀以下具體實(shí)施方式
,本發(fā)明的其他優(yōu)點(diǎn)會(huì)變得顯而易見。
作為示例而非限制,在附圖中示出了本發(fā)明,附圖中相同的附圖標(biāo)記指示相同或相似的元素,附圖中圖I是表示由操作系統(tǒng)外殼所主存的處于不同狀態(tài)的示例應(yīng)用(包括處于休眠狀態(tài)的應(yīng)用)的框圖。圖2是示出應(yīng)用的示例狀態(tài)(包括休眠狀態(tài))以及狀態(tài)間的轉(zhuǎn)移的狀態(tài)圖。圖3A是表示在啟動(dòng)應(yīng)用時(shí)各組件之間的事件/控制的示例流程的順序/控制圖。圖3B是表示在停用應(yīng)用時(shí)各組件之間的事件/控制的示例流程的順序/控制圖。圖4A是表示在從休眠狀態(tài)恢復(fù)被停用的應(yīng)用時(shí)各組件之間的事件/控制的示例流程的順序/控制圖。
圖4B是表示在關(guān)閉應(yīng)用時(shí)各組件之間的事件/控制的示例流程的順序/控制圖。圖5是表示其中可實(shí)現(xiàn)在此處所描述的各實(shí)施例的ー個(gè)或多個(gè)方面的示例性、非限制性計(jì)算系統(tǒng)或操作環(huán)境的框圖,例如,在移動(dòng)電話設(shè)備的示例中。
具體實(shí)施例方式本文描述的技術(shù)的各方面一般涉及移動(dòng)設(shè)備等維護(hù)處于休眠狀態(tài)的應(yīng)用的技術(shù),該處于休眠狀態(tài)的應(yīng)用一般對(duì)應(yīng)于當(dāng)處于后臺(tái)時(shí)不能執(zhí)行任何代碼的應(yīng)用。為此,包括應(yīng)用平臺(tái)的外殼組件/框架(例如,Windows 電話)將應(yīng)用進(jìn)程保留在存儲(chǔ)器中,并維護(hù)該應(yīng)用的狀態(tài)和執(zhí)行上下文,但不允許該進(jìn)程運(yùn)行。例如,該外殼可以掛起后臺(tái)應(yīng)用內(nèi)的線程活動(dòng)。休眠的后臺(tái)應(yīng)用在用戶將該應(yīng)用帶到前臺(tái)時(shí)重獲執(zhí)行代碼的能力。在一個(gè)實(shí)現(xiàn)中,操作系統(tǒng)在停用ー應(yīng)用時(shí)不終止該應(yīng)用的進(jìn)程。相反,應(yīng)用可去往后臺(tái)并保持常駐在存儲(chǔ)器中。這消除了對(duì)應(yīng)用重新初始化和重新加載狀態(tài)的需求,這隱含地意味著更快的應(yīng)用恢復(fù)時(shí)間。應(yīng)當(dāng)理解,此處的任何示例均是非限制性的。例如,各示例實(shí)現(xiàn)和休眠應(yīng)用是在Windows 移動(dòng)設(shè)備操作環(huán)境的上下文中描述的,然而這只是出于說明目的,并且其他操作環(huán)境可以從本文描述的休眠應(yīng)用狀態(tài)的概念中獲益。因此,本發(fā)明不限于在此描述的任何具體的實(shí)施例、方面、概念、結(jié)構(gòu)、功能或示例。相反,此處所描述的實(shí)施例、方面、概念、結(jié)構(gòu)、功能或示例中的任ー個(gè)都是非限制性的,并且本發(fā)明一般能夠以在計(jì)算和應(yīng)用/任務(wù)切換方面提供好處和優(yōu)點(diǎn)的各種方式來使用。圖I是示出移動(dòng)設(shè)備環(huán)境中的各示例組件的一般化框圖。外殼102(應(yīng)用框架)控制多個(gè)應(yīng)用,它提供對(duì)設(shè)備資源的訪問,所述設(shè)備資源包括只有一個(gè)應(yīng)用(通常只有前臺(tái)應(yīng)用106)通常可訪問的獨(dú)占資源104(例如,顯示器)以及前臺(tái)應(yīng)用106和其他應(yīng)用可以使用的共享資源108 (例如,存儲(chǔ)器、網(wǎng)絡(luò),等等)。如圖I所示,ー個(gè)或多個(gè)應(yīng)用是已埋葬(tombstone)應(yīng)用IlO1-IlOmt5更具體而言,在常規(guī)移動(dòng)設(shè)備中,在應(yīng)用不再是前臺(tái)應(yīng)用之后不久被終止。在先前設(shè)備中,該應(yīng)用保持終止(例如,框112)并且必須作為新實(shí)例來完全重新啟動(dòng)。在ー些更當(dāng)代的移動(dòng)設(shè)備中,如果UX(用戶體驗(yàn),包括各用戶界面組件)提供供用戶導(dǎo)航回應(yīng)用實(shí)例的機(jī)制,其中與被終止相比,每ー應(yīng)用改為被埋葬,從而意味著向該應(yīng)用給出了保存狀態(tài)的機(jī)會(huì),此后該進(jìn)程被拆卸并且在應(yīng)用棧上保持其先前存在的標(biāo)記。本文描述的技術(shù)涉及維護(hù)ー個(gè)或多個(gè)應(yīng)用作為休眠應(yīng)用IH1-IHn并維護(hù)該應(yīng)用的相關(guān)聯(lián)的狀態(tài)和執(zhí)行上下文,其中休眠應(yīng)用(例如,其進(jìn)程)被保留常駐在存儲(chǔ)器中。這允許更快速地激活休眠應(yīng)用(相對(duì)于已埋葬應(yīng)用)到前臺(tái)正在運(yùn)行的狀態(tài)。圖2是示出一旦用戶啟動(dòng)應(yīng)用(框422)且該應(yīng)用進(jìn)入正在運(yùn)行的狀態(tài)224,該應(yīng)用的示例狀態(tài)的狀態(tài)圖。在該示例中,該應(yīng)用保持處于正在運(yùn)行的狀態(tài)224直至用戶采取用戶交互,即向后導(dǎo)航動(dòng)作等作為響應(yīng)關(guān)閉該應(yīng)用的導(dǎo)航相關(guān)動(dòng)作(框226,例如,在棧中向后回退該應(yīng)用或關(guān)閉該應(yīng)用動(dòng)作),或諸如按下開始按鈕等停用該應(yīng)用的向前導(dǎo)航動(dòng)作(框 228)。在被停用吋,該外殼/框架通知該應(yīng)用并暫停一段時(shí)間(例如,達(dá)10秒)以向該應(yīng)用給出準(zhǔn)備變成休眠應(yīng)用的時(shí)間。例如,向該應(yīng)用給出持久保持存儲(chǔ)器、關(guān)閉任何打開的文件等等的時(shí)間。在圖2中,暫停由暫停狀態(tài)230來表示,這在暫停完成(框234)時(shí)進(jìn)入休眠狀態(tài)236。在用戶在達(dá)到完整暫停時(shí)間之前返回該應(yīng)用(激活,框240)的情況下,該應(yīng)用返回到正在運(yùn)行的狀態(tài)224。 外殼102檢測(cè)應(yīng)用何時(shí)被停用,并將它移到休眠狀態(tài)236。當(dāng)檢測(cè)到時(shí),外殼102執(zhí)行某些操作來確保休眠應(yīng)用不能干擾新前臺(tái)應(yīng)用。例如,外殼102取消任何可取消的請(qǐng)求,可阻塞API利用,釋放配屬給已停用應(yīng)用的獨(dú)占硬件資源,并掛起該應(yīng)用所創(chuàng)建或代表該應(yīng)用所創(chuàng)建的線程。外殼掛起該應(yīng)用的線程活動(dòng)并阻止后臺(tái)應(yīng)用消費(fèi)CPU周期。通過這樣做,休眠后臺(tái)應(yīng)用如同該進(jìn)程被操作系統(tǒng)終止那樣來操作,并且不繼續(xù)使用該設(shè)備的電池或減緩該設(shè)備前臺(tái)活動(dòng)。注意,為了性能/察覺的性能,這些操作中的一些可以于準(zhǔn)備新前臺(tái)應(yīng)用并行。例如,外殼可以在暫停時(shí)間期間將顯示器資源給予新應(yīng)用,使得用戶不必等待完整10秒才能察覺至該新前臺(tái)應(yīng)用的改變??梢圆幌蛟撉芭_(tái)應(yīng)用立即給予相機(jī)資源,例如,在用戶無意地按下開始按鈕并且想要返回先前正在運(yùn)行的應(yīng)用的情況下。外殼將資源從已停用應(yīng)用分離。這樣的資源的示例包括振動(dòng)控制器、聲音和媒體播放器、照片/視頻相機(jī)、位置服務(wù)、傳感器、網(wǎng)絡(luò),等等。通過這樣做,在休眠狀態(tài)236中,休眠后臺(tái)應(yīng)用如同該進(jìn)程被操作系統(tǒng)終止那樣來操作,并且不繼續(xù)使用設(shè)備資源也不阻止前臺(tái)應(yīng)用使用這些資源。外殼可以從休眠后臺(tái)應(yīng)用釋放存儲(chǔ)器資源以最小化操作系統(tǒng)中的存儲(chǔ)器占用量(footprint)。應(yīng)用存儲(chǔ)器占用量越小,能夠常駐在存儲(chǔ)器中并且因而能被快速恢復(fù)的休眠后臺(tái)應(yīng)用的數(shù)量就越大。外殼102例如經(jīng)由資源監(jiān)視器組件120(圖1,其中包含的或與其耦合的)還可監(jiān)視休眠應(yīng)用對(duì)至少ー個(gè)資源的使用(例如,CPU使用)。更具體而言,總體目標(biāo)是休眠應(yīng)用不執(zhí)行大量活動(dòng),包括不運(yùn)行代碼;然而,一些代碼(例如,第一方本機(jī)應(yīng)用)可能繼續(xù)運(yùn)行代碼。因而,在用于允許準(zhǔn)備變得休眠的10秒持續(xù)時(shí)間之后,外殼可以強(qiáng)制不使用資源。為此,周期性地(例如,每5分鐘)或根據(jù)某ー其他事件,來檢查每一休眠應(yīng)用的CPU使用。如果仍然休眠并且存在ー些CPU使用,(例如,CPU使用> O或某一其他所允許的閾值),則休眠應(yīng)用可被移到已埋葬狀態(tài)238 (圖2)。無論其他狀態(tài)都可檢查這一點(diǎn)(例如,不僅僅在設(shè)備/電話空閑時(shí))。此外,可以使用累進(jìn)收緊的策略,例如閾值可以是非零并且隨時(shí)間遞減。
如有必要,如在操作系統(tǒng)達(dá)到存儲(chǔ)器用盡條件時(shí),外殼可以終止休眠后臺(tái)應(yīng)用的進(jìn)程,例如通過經(jīng)由不維護(hù)狀態(tài)/標(biāo)記來埋葬或完全終止。這為前臺(tái)應(yīng)用釋放存儲(chǔ)器資源(以及任何其他共享資源)。總之,在被暫停時(shí),系統(tǒng)外殼用于從應(yīng)用底層分離獨(dú)占使用資源,并從該應(yīng)用底層分離共享使用資源。外殼暫停資源提供給該應(yīng)用的更新通知。對(duì)于待處理的可取消請(qǐng)求,外殼取消它們;暫停任何不可取消請(qǐng)求或向其給出完成通知。代表該應(yīng)用創(chuàng)建的進(jìn)程內(nèi)本機(jī)線程被停止,并且如果可能,代表該應(yīng)用創(chuàng)建的任何進(jìn)程外本機(jī)線程被停止。釋放可被容易且快速地重新創(chuàng)建的任何應(yīng)用資源。轉(zhuǎn)向從休眠狀態(tài)激活/恢復(fù)應(yīng)用,在應(yīng)用激活時(shí),該框架恢復(fù)應(yīng)用線程并運(yùn)行用于已取消請(qǐng)求的正常故障路徑,并代表該應(yīng)用來配屬資源。更具體而言,在恢復(fù)時(shí),該系統(tǒng)外殼用于重新配屬獨(dú)占使用資源并恢復(fù)他們的狀態(tài)。如果可能,重新配屬共享使用資源并恢復(fù)它們的狀態(tài)。恢復(fù)資源提供給該應(yīng)用的更新通知。對(duì)于被取消的可取消請(qǐng)求,運(yùn)行該應(yīng)用中的正常故障路徑?;謴?fù)任何不可取消請(qǐng)求,并且激發(fā)任何待處理的完成通知。外殼 重新創(chuàng)建/恢復(fù)代表該應(yīng)用創(chuàng)建的任何進(jìn)程內(nèi)本機(jī)線程,以及按需重新創(chuàng)建/恢復(fù)代表該應(yīng)用創(chuàng)建的任何進(jìn)程外本機(jī)線程。還按需重新創(chuàng)建已釋放資源。圖3A-4B是涉及Windows 移動(dòng)設(shè)備環(huán)境的順序圖,其概括示出各事件如何觸發(fā)各組件來參與將應(yīng)用停用到休眠狀態(tài)以及從休眠狀態(tài)激活應(yīng)用。圖3A示出向前導(dǎo)航場(chǎng)景的示例組合控制流,其中在ー應(yīng)用(先前處于前臺(tái))被停用(圖3B)時(shí)啟動(dòng)ー應(yīng)用。圖4A和4B是示出用于恢復(fù)激活的應(yīng)用(圖4A)并關(guān)閉ー應(yīng)用(圖4B)的示例組合控制流的順序圖。在圖3A-4B中,夕卜殼102包括主存一個(gè)或多個(gè)客戶端進(jìn)程的服務(wù)器,例如用于姆一應(yīng)用的taskhost. exe 330。為了開始已啟動(dòng)的任務(wù)(圖3A),外殼執(zhí)行管理器331與客戶端執(zhí)行管理器332進(jìn)行通信,客戶端執(zhí)行管理器332進(jìn)而向任務(wù)主機(jī)組件334發(fā)送信號(hào)。在圖3A-4B中,任務(wù)主機(jī)(TaskHost)組件334與處理應(yīng)用導(dǎo)航所展示的各頁(yè)的幀組件336進(jìn)行通信,例如將先前各頁(yè)置于棧上以供導(dǎo)航、管理緩沖區(qū)(包括使用內(nèi)部畫面(splash)應(yīng)用來分配圖像緩沖區(qū)),等等。在用戶經(jīng)由各頁(yè)進(jìn)行交互時(shí),幀組件生成各事件。SLM/XNA和CLR組件338和340分別指的是該示例環(huán)境中使用的基于Silverlight 運(yùn)行時(shí)和公共語(yǔ)言運(yùn)行吋。應(yīng)用代碼是經(jīng)由應(yīng)用組件342來表示的。示例性操作環(huán)境圖5示出可在其上實(shí)現(xiàn)此處所描述的主題的各方面的合適的移動(dòng)設(shè)備500的示例。移動(dòng)設(shè)備500僅為設(shè)備的ー個(gè)示例,并非g在對(duì)此處所描述的主題的各方面的使用范圍或功能提出任何限制。移動(dòng)設(shè)備500也不應(yīng)被解釋成對(duì)于在示例性移動(dòng)設(shè)備500中所示出的任一組件或其組合有任何依賴或要求。參考圖5,用于實(shí)現(xiàn)此處所述的主題的各方面的示例性設(shè)備包括移動(dòng)設(shè)備500。在一些實(shí)施例中,移動(dòng)設(shè)備500包括蜂窩電話、允許與其他手持設(shè)備的語(yǔ)音通信的手持設(shè)備、某一其他語(yǔ)音通信設(shè)備等。在這些實(shí)施例中,移動(dòng)設(shè)備500可配備用于拍攝照片的相機(jī),雖然這在其他實(shí)施例中可能不是必需的。在其他實(shí)施例中,移動(dòng)設(shè)備500包括個(gè)人數(shù)字助理(PDA),手持式游戲設(shè)備,筆記本計(jì)算機(jī),打印機(jī),包括機(jī)頂盒、媒體中心或其他電器等的電器,其他移動(dòng)設(shè)備等。在又一些實(shí)施例中,移動(dòng)設(shè)備500可包括通常被認(rèn)作非移動(dòng)的設(shè)備,如個(gè)人計(jì)算機(jī)、服務(wù)器等。移動(dòng)設(shè)備500的組件可以包括但不限干,處理單元505、系統(tǒng)存儲(chǔ)器510和將包括系統(tǒng)存儲(chǔ)器510在內(nèi)的各種系統(tǒng)組件耦合至處理單元505的總線515??偩€515可包括幾種類型的總線結(jié)構(gòu)中的任何ー種,包括存儲(chǔ)器總線、存儲(chǔ)控制器、外圍總線、以及使用各種總線體系結(jié)構(gòu)中的任ー種的局部總線等??偩€515允許在移動(dòng)設(shè)備500的各種組件之間傳送數(shù)據(jù)。移動(dòng)設(shè)備500可以包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是能由移動(dòng)設(shè)備500訪問的任何可用介質(zhì),而且包含易失性和非易失性介質(zhì)以及可移動(dòng)、不可移動(dòng)介質(zhì)。作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)等信息的任意方法或技術(shù)來實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于,RAM、ROM、EEPR0M、閃存或其他存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其他光盤存儲(chǔ)、磁帶盒、磁帶、磁盤存儲(chǔ)或其他磁存儲(chǔ)設(shè)備、或者可用于存儲(chǔ)所需信息并且可由移動(dòng)設(shè)備500訪問的任何其他介質(zhì)。 通信介質(zhì)通常以諸如載波或其他傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)來體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù),并包括任何信息傳送介質(zhì)。術(shù)語(yǔ)“已調(diào)制數(shù)據(jù)信號(hào)”是指以將信息編碼在信號(hào)中的方式設(shè)定或改變其一個(gè)或多個(gè)特征的信號(hào)。作為示例而非限制,通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或直接線連接,以及無線介質(zhì),諸如聲學(xué)、RF、藍(lán)牙 、無線USB、紅外、WiFi、WiMAX、和其他無線介質(zhì)。上述的任意組合也應(yīng)包含在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。系統(tǒng)存儲(chǔ)器510包括易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì),且可包括只讀存儲(chǔ)器(ROM)和隨機(jī)存取存儲(chǔ)器(RAM)。在諸如蜂窩電話等移動(dòng)設(shè)備上,操作系統(tǒng)代碼520有時(shí)被包括ROM中,但在其他實(shí)施例中,這不是必需的。類似地,應(yīng)用程序525通常位于RAM中,但同樣在其他實(shí)施例中,應(yīng)用程序可位于ROM中或其他計(jì)算機(jī)可讀存儲(chǔ)器中。堆530提供用干與操作系統(tǒng)520和應(yīng)用程序525相關(guān)聯(lián)的狀態(tài)的存儲(chǔ)器。例如,操作系統(tǒng)520和應(yīng)用程序525可在其操作期間將變量和數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在堆530中。移動(dòng)設(shè)備500還可包括其他可移動(dòng)/不可移動(dòng)、易失性/非易失性存儲(chǔ)器。作為示例,圖5示出閃存卡535、硬盤驅(qū)動(dòng)器536、以及記憶棒537。例如,可小型化硬盤驅(qū)動(dòng)器536以適應(yīng)存儲(chǔ)器槽。移動(dòng)設(shè)備500可經(jīng)由可移動(dòng)存儲(chǔ)器接ロ 531與這些類型的非易失性可移動(dòng)存儲(chǔ)器接ロ,或可經(jīng)由通用串行總線(USB)、IEEE 5394、一個(gè)或多個(gè)有線端ロ 540、或天線565連接。在這些實(shí)施例中,可移動(dòng)存儲(chǔ)器設(shè)備535-537可經(jīng)由通信模塊532與移動(dòng)設(shè)備對(duì)接。在一些實(shí)施例中,并非所有這些類型的存儲(chǔ)器都可被包括在單個(gè)移動(dòng)設(shè)備上。在其他實(shí)施例中,可將這些和其他類型的可移動(dòng)存儲(chǔ)器中的ー個(gè)或多個(gè)包括在單個(gè)移動(dòng)設(shè)備上。在一些實(shí)施例中,可按更永久地附連到移動(dòng)設(shè)備500的方式連接硬盤驅(qū)動(dòng)器536。例如,硬盤驅(qū)動(dòng)器536可連接到諸如并行高級(jí)技術(shù)附件(PATA)、串行高級(jí)技術(shù)附件(SATA)或其他可連接到總線515的附件等接ロ。在此類實(shí)施例中,移除硬盤驅(qū)動(dòng)器可涉及移除移動(dòng)設(shè)備500的外殼并移除將硬盤驅(qū)動(dòng)器536連接到移動(dòng)設(shè)備500內(nèi)的支承結(jié)構(gòu)的螺絲釘或其他緊固件。
以上描述和在圖5中示出的可移動(dòng)存儲(chǔ)設(shè)備535-537及其相關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)提供對(duì)用于移動(dòng)設(shè)備500的計(jì)算機(jī)可讀指令、程序模塊、數(shù)據(jù)結(jié)構(gòu)、和其他數(shù)據(jù)的存儲(chǔ)。例如,可移動(dòng)存儲(chǔ)器設(shè)備535-537可存儲(chǔ)由移動(dòng)設(shè)備500拍攝的圖像、語(yǔ)音錄音、聯(lián)系人信息、程序、用于程序的數(shù)據(jù)等。用戶可通過諸如鍵區(qū)541和話筒542等輸入設(shè)備向移動(dòng)設(shè)備500中輸入命令和信息。在某些實(shí)施例中,顯示器543可以是觸敏屏幕并可允許用戶在其上輸入命令和信息。鍵區(qū)541和顯示器543可通過耦合到總線515的用戶輸入接ロ 550連接到處理單元505,但也可由其他接口和總線結(jié)構(gòu)連接,如通信模塊532和有線端ロ 540。運(yùn)動(dòng)檢測(cè)552可用于確定對(duì)設(shè)備500作出的姿勢(shì)。例如,用戶可經(jīng)由對(duì)話筒542講話以及經(jīng)由在鍵區(qū)541或觸敏顯示器543上輸入的文本消息來與其他用戶通信。音頻單元555可提供電信號(hào)以驅(qū)動(dòng)揚(yáng)聲器544以及接收并數(shù)字化接收自話筒542的音頻信號(hào)。
移動(dòng)設(shè)備500可包括提供信號(hào)以驅(qū)動(dòng)相機(jī)561的視頻單元560。視頻單元560還可接收由相機(jī)561獲得的圖像并將這些圖像提供給包括在移動(dòng)設(shè)備500上的處理單元505和/或存儲(chǔ)器。由相機(jī)561獲得的圖像可包括視頻、不形成視頻的ー個(gè)或多個(gè)圖像、或其某
ー組合。通信模塊532可向一根或多根天線565提供信號(hào)并從其接收信號(hào)。天線565之一可發(fā)射并接收用于蜂窩電話網(wǎng)絡(luò)的消息。另一天線可發(fā)射并接收藍(lán)牙 消息。又一天線(或共享天線)可經(jīng)由無線以太網(wǎng)網(wǎng)絡(luò)標(biāo)準(zhǔn)發(fā)射并接收網(wǎng)絡(luò)消息。 更進(jìn)一歩,天線將例如GPS信號(hào)等基于位置的信息提供給GPS接ロ和機(jī)制572。GPS機(jī)制572又使相應(yīng)的GPS數(shù)據(jù)(例如時(shí)間和坐標(biāo))可用于處理。在一些實(shí)施例中,可使用單根天線來發(fā)射和/或接收用于超過ー種類型的網(wǎng)絡(luò)的消息。例如,單根天線可發(fā)射并接收語(yǔ)音和分組消息。當(dāng)在網(wǎng)絡(luò)化環(huán)境中操作時(shí),移動(dòng)設(shè)備500可連接到一個(gè)或多個(gè)遠(yuǎn)程設(shè)備。遠(yuǎn)程設(shè)備可包括個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、蜂窩電話、媒體回放設(shè)備、對(duì)等設(shè)備或其他常見的網(wǎng)絡(luò)節(jié)點(diǎn),并且一般包括上面相對(duì)于移動(dòng)設(shè)備500所述的許多或全部元件。本文所描述的主題的各方面可與眾多其他通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置一起操作。適用于此處所描述的主題的各方面的公知的計(jì)算系統(tǒng)、環(huán)境和/或配置的示例包括,但不限于,個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持式或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括上述系統(tǒng)或設(shè)備中的任ー個(gè)的分布式計(jì)算環(huán)境等。此處所描述的主題的各方面可在由移動(dòng)設(shè)備執(zhí)行的諸如程序模塊等計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。本文所描述的主題的各方面也可以在其中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計(jì)算環(huán)境中實(shí)現(xiàn)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)器存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。此外,雖然此處頻繁使用術(shù)語(yǔ)服務(wù)器,但可以認(rèn)識(shí)到,該術(shù)語(yǔ)也可涵蓋客戶機(jī)、分布在一個(gè)或多個(gè)計(jì)算機(jī)上的一個(gè)或多個(gè)進(jìn)程的集合、ー個(gè)或多個(gè)獨(dú)立的存儲(chǔ)設(shè)備、ー個(gè)或多個(gè)其他設(shè)備的集合、以上的一個(gè)或多個(gè)的組合,等等。
結(jié)語(yǔ)盡管本發(fā)明易于作出各種修改和替換構(gòu)造,但其某些說明性實(shí)施例在附圖中示出并在上面被詳細(xì)地描述。然而應(yīng)當(dāng)了解,這不g在將本發(fā)明限于所公開的具體形式,而是相反地,g在覆蓋落入本發(fā)明的精神和范圍之內(nèi)的所 有修改、替換構(gòu)造和等效方案。
權(quán)利要求
1.一種在計(jì)算環(huán)境中至少部分在至少一個(gè)處理器上執(zhí)行的方法,包括將應(yīng)用從正在運(yùn)行的狀態(tài)(224)移到休眠狀態(tài)(236),包括將應(yīng)用進(jìn)程保留在存儲(chǔ)器中,以及與所述應(yīng)用相關(guān)聯(lián)地維護(hù)允許該應(yīng)用被激活到所述正在運(yùn)行的狀態(tài)(224)的狀態(tài)數(shù)據(jù)和執(zhí)行上下文信息。
2.如權(quán)利要求I所述的方法,其特征在于,將所述應(yīng)用從所述正在運(yùn)行的狀態(tài)移到所述休眠狀態(tài)包括暫停一段時(shí)間以允許所述應(yīng)用為所述休眠狀態(tài)做準(zhǔn)備。
3.如權(quán)利要求I所述的方法,其特征在于,將所述應(yīng)用從所述正在運(yùn)行的狀態(tài)移到所述休眠狀態(tài)是響應(yīng)于檢測(cè)到與向前導(dǎo)航相對(duì)應(yīng)的用戶交互來發(fā)生的。
4.如權(quán)利要求I所述的方法,其特征在于,還包括將所述應(yīng)用從所述休眠狀態(tài)激活到正在運(yùn)行的狀態(tài),其中將所述應(yīng)用從所述休眠狀態(tài)移到所述正在運(yùn)行的狀態(tài)是響應(yīng)于檢測(cè)到與后退導(dǎo)航相對(duì)應(yīng)的用戶交互來發(fā)生的。
5.如權(quán)利要求I所述的方法,其特征在于,將所述應(yīng)用從所述正在運(yùn)行的狀態(tài)移到所述休眠狀態(tài)包括掛起所述應(yīng)用所創(chuàng)建的或代表所述應(yīng)用所創(chuàng)建的至少一個(gè)線程,取消至少一個(gè)可取消請(qǐng)求,阻塞所述應(yīng)用對(duì)API的使用,或釋放配屬給所述應(yīng)用的至少一個(gè)資源,或掛起所述應(yīng)用所創(chuàng)建的或代表所述應(yīng)用所創(chuàng)建的至少一個(gè)線程、取消至少一個(gè)可取消請(qǐng)求、阻塞所述應(yīng)用對(duì)API的使用、或釋放配屬給所述應(yīng)用的至少一個(gè)資源的任何組合。
6.如權(quán)利要求I所述的方法,其特征在于,所述應(yīng)用在移動(dòng)計(jì)算設(shè)備上休眠,并且還包括確定所述設(shè)備需要更多可用存儲(chǔ)器、終止所述應(yīng)用進(jìn)程、以及回收先前被用于保留所述應(yīng)用進(jìn)程的存儲(chǔ)器中的至少一些,其中終止所述應(yīng)用進(jìn)程包括將所述應(yīng)用從所述休眠狀態(tài)移到終止?fàn)顟B(tài)。
7.如權(quán)利要求I所述的方法,其特征在于,監(jiān)視所述休眠應(yīng)用的資源使用,并且如果所述資源使用超過閾值,則將所述應(yīng)用從所述休眠狀態(tài)移到已埋葬狀態(tài)。
8.一種在計(jì)算環(huán)境中的系統(tǒng),包括被配置成在各狀態(tài)之間轉(zhuǎn)移應(yīng)用的外殼組件(102)以及耦合到所述外殼組件的資源監(jiān)視器組件(120),所述轉(zhuǎn)移包括從正在運(yùn)行的狀態(tài)(224)轉(zhuǎn)移到休眠狀態(tài)(236),在所述休眠狀態(tài)中所述應(yīng)用的進(jìn)程被保留在存儲(chǔ)器中,所述資源監(jiān)視器組件被配置成評(píng)估所述應(yīng)用在處于所述休眠狀態(tài)時(shí)是否正使用至少一個(gè)資源超過所允許的閾值,并且如果是,則所述外殼組件被配置成將所述應(yīng)用從所述休眠狀態(tài)移到所述應(yīng)用的進(jìn)程不被保留在存儲(chǔ)器中的狀態(tài)(238)。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述外殼組件還被配置成將所述應(yīng)用從所述休眠狀態(tài)激活到正在運(yùn)行的狀態(tài),包括通過將至少一個(gè)資源配屬給所述應(yīng)用、恢復(fù)資源提供給所述應(yīng)用的至少一個(gè)更新通知、運(yùn)行至少一個(gè)可取消請(qǐng)求的故障路徑、恢復(fù)至少一個(gè)不可取消請(qǐng)求、激發(fā)至少一個(gè)通知、重新創(chuàng)建恢復(fù)至少一個(gè)線程、或重新創(chuàng)建至少一個(gè)應(yīng)用資源、或其任何組合。
10.一個(gè)或多個(gè)具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令在被執(zhí)行時(shí)執(zhí)行以下步驟,包括 將前臺(tái)應(yīng)用從正在運(yùn)行的狀態(tài)(224)移到休眠狀態(tài)(236),包括暫停(230) —段時(shí)間以允許所述應(yīng)用為所述休眠狀態(tài)做準(zhǔn)備、從所述應(yīng)用分離至少一個(gè)資源、阻塞API使用、暫停資源提供給所述應(yīng)用的至少一個(gè)更新通知、取消至少一個(gè)可取消請(qǐng)求、暫停至少一個(gè)不可取消請(qǐng)求、停止至少一個(gè)線程、或釋放至少一個(gè)應(yīng)用資源、或其任何組合;以及將所 述應(yīng)用從所述休眠狀態(tài)(236)移到處于正在運(yùn)行的狀態(tài)的前臺(tái)應(yīng)用,包括通過將至少一個(gè)資源配屬給所述應(yīng)用、恢復(fù)資源提供給所述應(yīng)用的至少一個(gè)更新通知、允許API使用、運(yùn)行至少一個(gè)可取消請(qǐng)求的故障路徑、恢復(fù)至少一個(gè)不可取消請(qǐng)求、激發(fā)至少一個(gè)通知、重新創(chuàng)建恢復(fù)至少一個(gè)線程、或重新創(chuàng)建至少一個(gè)應(yīng)用資源、或其任何組合。
全文摘要
本發(fā)明涉及移動(dòng)設(shè)備上的休眠后臺(tái)應(yīng)用。本發(fā)明涉及移動(dòng)設(shè)備以休眠狀態(tài)來維護(hù)應(yīng)用的技術(shù),其中該應(yīng)用的進(jìn)程未被終止并且保持在存儲(chǔ)器中但該應(yīng)用不能執(zhí)行代碼。此外,維護(hù)該應(yīng)用的狀態(tài)和執(zhí)行上下文,從而允許該應(yīng)用快速且高效地恢復(fù)到正在運(yùn)行的狀態(tài)。為了阻止該應(yīng)用在休眠時(shí)執(zhí)行代碼,掛起線程活動(dòng),取消、完成、或暫停請(qǐng)求,分離資源,等等??梢员O(jiān)視休眠應(yīng)用的資源使用,以在不正確地使用資源的情況下移除行為不當(dāng)?shù)男菝邞?yīng)用進(jìn)程。
文檔編號(hào)G06F9/48GK102681896SQ20121003228
公開日2012年9月19日 申請(qǐng)日期2012年2月14日 優(yōu)先權(quán)日2011年2月14日
發(fā)明者A·M·特魯菲內(nèi)斯庫(kù), A·巴德熱辛, B·C·席爾瓦, I·凡斯連, I·塞里, P·D·巴尼特, P·J·托爾, R·J·拉米基, S·P·伯克, S·齊達(dá)畢, T·M·庫(kù)爾策曼 申請(qǐng)人:微軟公司