欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于后臺(tái)工作執(zhí)行的事件聚合的制作方法

文檔序號(hào):6376055閱讀:235來(lái)源:國(guó)知局
專利名稱:用于后臺(tái)工作執(zhí)行的事件聚合的制作方法
用于后臺(tái)工作執(zhí)行的事件聚合
背景技術(shù)
常規(guī)操作系統(tǒng)實(shí)施幾種不同執(zhí)行模式來(lái)管理應(yīng)用的前臺(tái)工作和后臺(tái)工作??烧J(rèn)為是前臺(tái)工作的處理任務(wù)的例子包括(但不限于)響應(yīng)于用戶輸入來(lái)呈現(xiàn)圖形用戶界面和與用戶交互有關(guān)的任何其它類型的工作??烧J(rèn)為是后臺(tái)工作的處理任務(wù)的例子包括(但不限于)下載和安裝軟件更新,與服務(wù)器同步和可不涉及到用戶注意力的任何其它類型的工作。在第一模型中,可允許任意數(shù)量的應(yīng)用來(lái)在后臺(tái)和前臺(tái)這兩者中并發(fā)執(zhí)行并競(jìng)爭(zhēng)資源,諸如處理器周期和存儲(chǔ)器。這個(gè)模型通常實(shí)施于臺(tái)式機(jī)和膝上型計(jì)算機(jī)上。在第二模式中,所有應(yīng)用被阻止執(zhí)行,除了“活動(dòng)”應(yīng)用之外,“活動(dòng)”應(yīng)用即用戶主
動(dòng)與之交互的應(yīng)用。這種模型通常實(shí)施于移動(dòng)設(shè)備上,其中在任何特定時(shí)間,用戶通常與在全屏上顯示的單個(gè)應(yīng)用交互。在第三模型中,針對(duì)相同應(yīng)用的前臺(tái)工作和后臺(tái)工作被對(duì)待為互斥的,使得在前臺(tái)中執(zhí)行的應(yīng)用并不安排同時(shí)做任何后臺(tái)工作,且反之亦然。在第四模型中,應(yīng)用可單獨(dú)地實(shí)例化(instantiated)用于前臺(tái)工作和后臺(tái)工作,且兩個(gè)實(shí)例并發(fā)執(zhí)行并競(jìng)爭(zhēng)資源。

發(fā)明內(nèi)容
前文為本發(fā)明的非限制性總結(jié),本發(fā)明由所附權(quán)利要求限定。發(fā)明人已經(jīng)認(rèn)識(shí)且意識(shí)到從現(xiàn)有操作系統(tǒng)執(zhí)行模型中出現(xiàn)的若干缺點(diǎn),且已經(jīng)開(kāi)發(fā)了新的執(zhí)行模型,新的執(zhí)行模型提供諸如改進(jìn)的電池壽命和用戶體驗(yàn)之類的優(yōu)點(diǎn)。在某些實(shí)施例中,操作系統(tǒng)可單獨(dú)地加載相同應(yīng)用或不同應(yīng)用的前臺(tái)工作和后臺(tái)工作,且在做出安排決策時(shí)可不同地對(duì)待前臺(tái)工作和后臺(tái)工作。例如,應(yīng)用組件可被指定為前臺(tái)組件或后臺(tái)組件,使得操作系統(tǒng)可基于組件的指定而向組件應(yīng)用不同的策略。策略可被設(shè)計(jì)為在向用戶提供豐富的多任務(wù)體驗(yàn)的同時(shí)促進(jìn)資源的高效使用。在一些另外的實(shí)施例中,操作系統(tǒng)可基于應(yīng)用所提供的、規(guī)定預(yù)期執(zhí)行后臺(tái)工作的特定情況的信息來(lái)確定何時(shí)執(zhí)行后臺(tái)工作。但是,操作系統(tǒng)可盡力試圖不考慮應(yīng)用的規(guī)定以防止后臺(tái)工作消耗太多功率和/或影響活動(dòng)的應(yīng)用的響應(yīng)性。在一實(shí)施例中,提供了一種供在至少一個(gè)計(jì)算機(jī)上執(zhí)行的操作系統(tǒng)使用的方法。該方法包括以下動(dòng)作識(shí)別應(yīng)用的至少一個(gè)后臺(tái)組件;確定是否滿足了至少一個(gè)條件;以及僅在確定出滿足了至少一個(gè)條件時(shí)執(zhí)行至少一個(gè)后臺(tái)組件。在另一實(shí)施例中,提供至少一個(gè)計(jì)算機(jī)可讀介質(zhì),其上至少編碼實(shí)施應(yīng)用的至少一個(gè)前臺(tái)組件的至少一個(gè)第一條計(jì)算機(jī)可執(zhí)行代碼;規(guī)范(specification),其識(shí)別用于執(zhí)行應(yīng)用的后臺(tái)工作的至少一個(gè)第二條計(jì)算機(jī)可執(zhí)行代碼;以及用于向操作系統(tǒng)規(guī)定在開(kāi)始后臺(tái)工作之前要滿足的至少一個(gè)條件的至少一個(gè)第二條可執(zhí)行代碼。在又一實(shí)施例中,提供一種計(jì)算機(jī)實(shí)施的方法,其包括動(dòng)作在操作系統(tǒng)處接收響應(yīng)于至少一個(gè)事件執(zhí)行應(yīng)用的至少一個(gè)后臺(tái)組件的請(qǐng)求;響應(yīng)于檢測(cè)到所述至少一個(gè)事件的發(fā)生來(lái)由操作系統(tǒng)確定是否滿足了由應(yīng)用設(shè)置的至少一個(gè)第一條件且確定是否滿足由操作系統(tǒng)設(shè)置的至少一個(gè)第二條件;以及在發(fā)生了至少一個(gè)事件之后確定了滿足了至少一個(gè)第一條件和第二條件時(shí)執(zhí)行至少一個(gè)后臺(tái)組件。應(yīng)了解前述概念和下文更詳細(xì)地討論的附加概念的所有組合(假設(shè)這樣的概念并非相互不一致)被預(yù)期為本文所公開(kāi)的發(fā)明主題的部分。特別地,在本公開(kāi)的尾部出現(xiàn)的要求保護(hù)的主題的所有組合被預(yù)期是本文所公開(kāi)的發(fā)明主題的部分。


附圖未必按照比例繪制。圖I示出了根據(jù)某些實(shí)施例具有針對(duì)前臺(tái)工作和后臺(tái)工作的去耦邏輯的說(shuō)明性應(yīng)用100。

圖2示出了根據(jù)某些實(shí)施例用于具有能并發(fā)執(zhí)行的前臺(tái)組件和后臺(tái)組件的應(yīng)用的說(shuō)明性狀態(tài)圖。圖3A示出了根據(jù)某些實(shí)施例操作系統(tǒng)在單獨(dú)進(jìn)程(process)中加載前臺(tái)組件和后臺(tái)組件的例子。圖3B示出了根據(jù)某些實(shí)施例操作系統(tǒng)在相同進(jìn)程中加載前臺(tái)組件和后臺(tái)組件的例子。圖4示出了根據(jù)某些實(shí)施例適于單獨(dú)地管理后臺(tái)工作和前臺(tái)工作的操作系統(tǒng)的例子。圖5為根據(jù)某些實(shí)施例可由代理(broker)組件響應(yīng)于安排代理事件的請(qǐng)求而進(jìn)行的說(shuō)明性過(guò)程的流程圖。圖6示出了根據(jù)某些實(shí)施例可由代理組件用于存儲(chǔ)關(guān)于代理事件的信息的說(shuō)明性數(shù)據(jù)結(jié)構(gòu)。圖7為根據(jù)某些實(shí)施例可由代理組件執(zhí)行以確定何時(shí)發(fā)信號(hào)通知代理事件的說(shuō)明性過(guò)程的流程圖。圖8A為根據(jù)某些實(shí)施例可由代理基礎(chǔ)結(jié)構(gòu)執(zhí)行以將后臺(tái)組件與代理事件相關(guān)聯(lián)的說(shuō)明性過(guò)程的流程圖。圖SB示出了根據(jù)某些實(shí)施例可用于與后臺(tái)組件相關(guān)聯(lián)地存儲(chǔ)代理事件的說(shuō)明性數(shù)據(jù)結(jié)構(gòu)。圖9示出了根據(jù)某些實(shí)施例可由代理基礎(chǔ)結(jié)構(gòu)執(zhí)行以確定何時(shí)執(zhí)行后臺(tái)組件以及如何管理后臺(tái)組件的執(zhí)行的說(shuō)明性過(guò)程900。圖10示意性地示出了其上可實(shí)施本公開(kāi)內(nèi)容的各種方面的說(shuō)明性計(jì)算機(jī)。
具體實(shí)施例方式發(fā)明人已經(jīng)認(rèn)識(shí)且意識(shí)到從現(xiàn)有操作系統(tǒng)執(zhí)行模型中出現(xiàn)的若干缺點(diǎn),且已經(jīng)開(kāi)發(fā)了新的執(zhí)行模型,新的執(zhí)行模型提供諸如改進(jìn)的電池壽命和用戶體驗(yàn)之類的優(yōu)點(diǎn)。例如,允許任何數(shù)量的應(yīng)用并發(fā)執(zhí)行的第一執(zhí)行模型可導(dǎo)致競(jìng)爭(zhēng)諸如處理器周期和存儲(chǔ)器的資源的太多的進(jìn)程。而這可能在資源受限的環(huán)境中導(dǎo)致遲緩的性能,諸如在具有有限處理速度和存儲(chǔ)器的移動(dòng)設(shè)備上。如果移動(dòng)設(shè)備靠電池電力運(yùn)行,那么不加區(qū)別地執(zhí)行進(jìn)程也可導(dǎo)致縮短的電池壽命。另一方面,阻止除了一個(gè)活動(dòng)的應(yīng)用之外所有應(yīng)用的第二執(zhí)行模型可排除所希望的多任務(wù)處理情況,諸如用戶在聽(tīng)音樂(lè)、接收全球定位系統(tǒng)(GPS)位置更新和/或接收呼入的因特網(wǎng)語(yǔ)音協(xié)議(VoIP)呼叫的同時(shí)編寫(xiě)郵件。這些多任務(wù)處理情形需要應(yīng)用能在一定程度上執(zhí)行,即使在用戶正與另一應(yīng)用主動(dòng)地交互時(shí)。第三執(zhí)行模型,即以互斥方式執(zhí)行同一應(yīng)用的前臺(tái)工作與后臺(tái)工作,可同樣排除所希望的多任務(wù)處理情形,諸如用戶一邊等待網(wǎng)絡(luò)下載完成一邊經(jīng)由網(wǎng)絡(luò)瀏覽器來(lái)閱讀一個(gè)網(wǎng)頁(yè)。雖然單獨(dú)實(shí)例化的第四執(zhí)行模型可允許操作系統(tǒng)并發(fā)執(zhí)行同一應(yīng)用的后臺(tái)工作和前臺(tái)工作,但仍存在多種可能的缺陷。例如,可能要太多地依賴應(yīng)用開(kāi)發(fā)人員寫(xiě)出以與前臺(tái)-后臺(tái)區(qū)別一致的方式表現(xiàn)的代碼。即使應(yīng)用并不暴露呼叫參數(shù)來(lái)允許操作系統(tǒng)指示應(yīng)用是否實(shí)例化用于前臺(tái)工作或后臺(tái)工作,開(kāi)發(fā)人員也有可能無(wú)意中忽略在應(yīng)用被實(shí)例化用
于前臺(tái)工作時(shí)防止后臺(tái)工作執(zhí)行的程序邏輯,或反之亦然。這可能會(huì)破壞操作系統(tǒng)有效地控制后臺(tái)工作的資源消耗的能力,因?yàn)椴僮飨到y(tǒng)可能難以確定聲稱的前臺(tái)實(shí)例是否僅執(zhí)行前臺(tái)工作(例如,響應(yīng)于經(jīng)由用戶界面接收的輸入)且不執(zhí)行任何不必要的或低效的后臺(tái)工作(例如,與服務(wù)器周期性地同步)。單獨(dú)實(shí)例化(instantiation)方案也可給應(yīng)用開(kāi)發(fā)人員帶來(lái)處置與并發(fā)執(zhí)行有關(guān)的復(fù)雜性的負(fù)擔(dān)。例如,當(dāng)同一應(yīng)用的前臺(tái)實(shí)例和后臺(tái)實(shí)例并發(fā)執(zhí)行時(shí),兩個(gè)實(shí)例可在不同的情境中執(zhí)行且可不共享狀態(tài)。因此,這兩個(gè)實(shí)例能僅通過(guò)由操作系統(tǒng)明確地提供的機(jī)制(mechanism)來(lái)通信,這可能使得程度代碼復(fù)雜。發(fā)明人已經(jīng)認(rèn)識(shí)到且意識(shí)到當(dāng)想要后臺(tái)工作與前臺(tái)工作之間的這樣的去耦時(shí),也可需要給予開(kāi)發(fā)人員不支持多個(gè)實(shí)例在不同情境中并發(fā)執(zhí)行的選項(xiàng)。因此,在某些實(shí)施例中,提供更靈活的執(zhí)行模型以允許操作系統(tǒng)以不同于前臺(tái)工作的方式來(lái)管理后臺(tái)工作。在一個(gè)方面,用于前臺(tái)工作和后臺(tái)工作的應(yīng)用邏輯可以一定方式去耦以便允許操作系統(tǒng)單獨(dú)地加載前臺(tái)工作和后臺(tái)工作,且在做出安排決定時(shí)不同地對(duì)待前臺(tái)工作和后臺(tái)工作。例如,在一些實(shí)施例中,應(yīng)用可包括單獨(dú)的組件,某些被指定為前臺(tái)組件且其它的被指定為后臺(tái)組件。操作系統(tǒng)可基于其指定來(lái)向組件應(yīng)用不同策略,其中策略可被設(shè)計(jì)為在向用戶提供豐富的多任務(wù)處理體驗(yàn)的同時(shí)促進(jìn)資源的高效使用。例如,可針對(duì)后臺(tái)組件實(shí)施一個(gè)或多個(gè)資源管理策略。這些策略可被設(shè)計(jì)成基于后臺(tái)組件所用的資源來(lái)限制何時(shí)執(zhí)行后臺(tái)組件。實(shí)施這樣的策略可幫助保存能量和/或保留充分的資源用于活動(dòng)的應(yīng)用(即,用戶主動(dòng)地與之交互的應(yīng)用)。這樣的策略可(盡管不需要)通過(guò)在受控制的執(zhí)行環(huán)境中執(zhí)行后臺(tái)組件來(lái)實(shí)施,受控制的執(zhí)行環(huán)境例如本領(lǐng)域中已知的沙箱(sandbox ),從而隔離后臺(tái)組件與前臺(tái)組件。在另一方面,應(yīng)用開(kāi)發(fā)人員可具有不支持同一應(yīng)用的前臺(tái)組件和后臺(tái)組件在不同的進(jìn)程中并發(fā)執(zhí)行的選項(xiàng)。選擇這樣的選項(xiàng)可得到更簡(jiǎn)單且更高效的程序代碼。在某些實(shí)施例中,前臺(tái)組件和后臺(tái)組件可在能彼此獨(dú)立地執(zhí)行的單獨(dú)可執(zhí)行代碼片段中提供。在一些另外的實(shí)施例中,前臺(tái)組件和后臺(tái)組件可具有不同入口點(diǎn),使得操作系統(tǒng)可將前臺(tái)組件和后臺(tái)組件加載于相同的進(jìn)程中但在不同的線程中,從而允許前臺(tái)組件和后臺(tái)組件以共享狀態(tài)一起執(zhí)行。以此方式,操作系統(tǒng)仍能區(qū)分與后臺(tái)工作相關(guān)聯(lián)的執(zhí)行線程和與前臺(tái)工作相關(guān)聯(lián)的執(zhí)行線程,而不需要應(yīng)用處置在不同進(jìn)程中并發(fā)執(zhí)行的各種復(fù)雜性。如果應(yīng)用確實(shí)支持并發(fā)執(zhí)行,則操作系統(tǒng)能選擇將前臺(tái)組件和后臺(tái)組件加載于相同進(jìn)程或單獨(dú)進(jìn)程中。在這些選項(xiàng)之間做選擇時(shí)可考慮多種因素。例如,如上文所討論的那樣,分開(kāi)后臺(tái)工作與前臺(tái)工作可允許操作系統(tǒng)在經(jīng)受某種資源限制的指定環(huán)境(例如,構(gòu)建成主管(host)后臺(tái)組件的沙箱)中運(yùn)行后臺(tái)工作。而且,分開(kāi)后臺(tái)工作與前臺(tái)工作可減小存儲(chǔ)器占用,因?yàn)楫?dāng)應(yīng)用僅執(zhí)行后臺(tái)工作時(shí)無(wú)需加載僅與用戶界面(UI)功能有關(guān)的可執(zhí)行代碼(例如庫(kù))。另一方面,如果應(yīng)用頻繁執(zhí)行后臺(tái)工作或者如果一個(gè)或多個(gè)用戶頻繁地與應(yīng)用交互,則可有利地將前臺(tái)工作與后臺(tái)工作共置于同一進(jìn)程中以便在前臺(tái)組件與后臺(tái)組件之間共享進(jìn)程啟動(dòng)成本。但是,操作系統(tǒng)也能通過(guò)在單獨(dú)的環(huán)境(例如軟件容器)中執(zhí)行后臺(tái)工作且高速緩存該環(huán)境來(lái)降低進(jìn)程啟動(dòng)成本。在又一方面,操作系統(tǒng)可基于應(yīng)用所提供的、規(guī)定預(yù)期執(zhí)行后臺(tái)工作所處的特定
情形的信息來(lái)確定何時(shí)執(zhí)行后臺(tái)工作。例如,在某些實(shí)施例中,操作系統(tǒng)可響應(yīng)于一個(gè)或多個(gè)規(guī)定的事件(也被稱作“觸發(fā)”)來(lái)安排僅后臺(tái)工作執(zhí)行。觸發(fā)的例子包括但不限于與網(wǎng)絡(luò)活動(dòng)有關(guān)的事件(例如,從網(wǎng)絡(luò)到達(dá)的包)、與用戶活動(dòng)有關(guān)的事件(例如,用戶登陸或退出)、預(yù)定的事件(例如定時(shí)器到期)、與外圍設(shè)備(例如,打印機(jī)通知)有關(guān)的事件等。在一些另外的實(shí)施例中,關(guān)于何時(shí)執(zhí)行后臺(tái)工作,操作系統(tǒng)可不考慮(override)應(yīng)用規(guī)范。例如,操作系統(tǒng)可充當(dāng)“代理”,其過(guò)濾預(yù)期觸發(fā)后臺(tái)工作的事件。在這樣的“代理的執(zhí)行”模型中,應(yīng)用可向操作系統(tǒng)注冊(cè)一個(gè)或多個(gè)觸發(fā)以使得后臺(tái)組件執(zhí)行,例如以進(jìn)行后臺(tái)工作的某單元(也被稱作“后臺(tái)任務(wù)”或“工作項(xiàng)目”)。并非讓這種觸發(fā)直接造成后臺(tái)組件的執(zhí)行,操作系統(tǒng)可引入做出決策的附加層。例如,當(dāng)應(yīng)用指定的觸發(fā)激發(fā)時(shí),操作系統(tǒng)可決定是否發(fā)信號(hào)通知所謂的“代理事件”,而這又會(huì)造成后臺(tái)組件執(zhí)行。以此方式,操作系統(tǒng)可最終決定何時(shí)執(zhí)行后臺(tái)組件。例如,電子郵件客戶端可注冊(cè)周期性(例如,每15分鐘)執(zhí)行的后臺(tái)同步任務(wù),且操作系統(tǒng)可設(shè)置適當(dāng)?shù)亩〞r(shí)器,且當(dāng)定時(shí)器到期時(shí),基于在該時(shí)間存在的操作條件來(lái)確定是否執(zhí)行任務(wù)??商鎿Q地或作為補(bǔ)充,操作系統(tǒng)可實(shí)施一定策略,其限制了應(yīng)用可向操作系統(tǒng)注冊(cè)的特定類型的觸發(fā)數(shù)量。在一個(gè)例子中,操作系統(tǒng)可限制應(yīng)用可注冊(cè)警報(bào)事件為觸發(fā)的次數(shù),其中限度可為合適限定的值。這樣的策略可為有益的,因?yàn)閳?bào)警事件可從“睡眠”模式“喚醒”計(jì)算機(jī),使得報(bào)警事件的限制發(fā)生可改進(jìn)電池壽命。如上文所討論的那樣,操作系統(tǒng)可實(shí)施被設(shè)計(jì)為控制后臺(tái)工作的資源消耗的一個(gè)或多個(gè)資源管理策略。在一些實(shí)施例中,可通過(guò)智能控制用信號(hào)通知代理事件使用代理執(zhí)行模型來(lái)實(shí)施資源管理,從而防止相關(guān)聯(lián)的后臺(tái)工作消耗太多電力和/或影響到活動(dòng)應(yīng)用的響應(yīng)性。在一個(gè)例子中,當(dāng)確定出剩余電池電力低于選擇的閾值時(shí),操作系統(tǒng)可推遲用信號(hào)通知一個(gè)或多個(gè)代理事件,從而推遲某不關(guān)鍵的后臺(tái)工作。在另一例子中,當(dāng)檢測(cè)到高網(wǎng)絡(luò)延時(shí)時(shí),操作系統(tǒng)可降低用信號(hào)通知一個(gè)或多個(gè)代理事件的頻率且由此降低應(yīng)用與服務(wù)器同步的頻率。在又一例子中,操作系統(tǒng)可推遲用信號(hào)通知一個(gè)或多個(gè)代理事件,因?yàn)橄嚓P(guān)聯(lián)的應(yīng)用用盡了可應(yīng)用的后臺(tái)處理限額,可應(yīng)用的后臺(tái)處理限額可(盡管不需要)以在某時(shí)段期間所允許的后臺(tái)處理的一定量的形式做出規(guī)定。在又一例子中,操作系統(tǒng)可推遲用信號(hào)通知一個(gè)或多個(gè)代理事件,因?yàn)槟承┓?wù)活動(dòng)可在進(jìn)行中使得相關(guān)的可執(zhí)行文件可以暫時(shí)不可用。在又一例子中,多個(gè)后臺(tái)工作項(xiàng)目可請(qǐng)求公共設(shè)施(例如,網(wǎng)絡(luò)連接、圖形處理單元、網(wǎng)絡(luò)攝像頭等),公共設(shè)施在開(kāi)關(guān)時(shí)可消耗大量能量。因此,操作系統(tǒng)可控制用信號(hào)通知一個(gè)或多個(gè)代理事件來(lái)鞏固這些工作項(xiàng)目的執(zhí)行且減少公共設(shè)施開(kāi)關(guān)的次數(shù),從而保存能量。發(fā)明人還認(rèn)識(shí)到且意識(shí)到某些類型的后臺(tái)工作并非必需的和/或?yàn)榈托У摹@?,根?jù)安排喚醒以與電子郵件服務(wù)器同步的電子郵件客戶端可發(fā)現(xiàn)不存在網(wǎng)絡(luò)連接,且簡(jiǎn)單地回到暫停狀態(tài)以在未來(lái)再次醒來(lái)。在此情形下,花費(fèi)電力可能只是為了喚醒電子郵件客戶端來(lái)短暫地檢查網(wǎng)絡(luò)可用性,但可能卻做了沒(méi)有用的工作。因此,可能需要推遲喚醒電子郵件客戶端直到某些系統(tǒng)條件使得可能做出有用的工作時(shí)。這樣的系統(tǒng)條件的例子包括(但不限于)資源可用性,諸如到因特網(wǎng)的連接,和開(kāi)啟硬件組件(例如, 顯示器、揚(yáng)聲器
坐')
寸/ ο因此,在某些實(shí)施例中,操作系統(tǒng)可使得后臺(tái)組件與一個(gè)或多個(gè)條件相關(guān)聯(lián),作為一個(gè)或多個(gè)觸發(fā)的補(bǔ)充。當(dāng)觸發(fā)激發(fā)時(shí),操作系統(tǒng)可檢查相關(guān)聯(lián)的條件,且僅在滿足了所有相關(guān)聯(lián)的條件的情況下才安排后臺(tái)組件執(zhí)行。因此,通過(guò)針對(duì)后臺(tái)組件規(guī)定一個(gè)或多個(gè)條件,應(yīng)用開(kāi)發(fā)人員可向操作系統(tǒng)識(shí)別一組環(huán)境,在這些環(huán)境下后臺(tái)組件可能有成果地執(zhí)行,且操作系統(tǒng)可相應(yīng)地安排后臺(tái)組件來(lái)執(zhí)行。在某些另外的實(shí)施例中,操作系統(tǒng)可被配置成在在觸發(fā)激發(fā)時(shí)操作系統(tǒng)確定出未滿足一個(gè)或多個(gè)相關(guān)聯(lián)的條件的情況下鎖存觸發(fā)。以此方式,操作系統(tǒng)可繼續(xù)檢查相關(guān)聯(lián)的條件,且如果且當(dāng)所有相關(guān)聯(lián)的條件變得滿足,則可執(zhí)行后臺(tái)組件??商鎿Q地或作為補(bǔ)充,如果在觸發(fā)激發(fā)時(shí)未滿足一個(gè)或多個(gè)相關(guān)聯(lián)的條件,操作系統(tǒng)可簡(jiǎn)單地丟棄激發(fā)的觸發(fā)。在另外某些實(shí)施例中,操作系統(tǒng)可被配置成保持狀態(tài)信息,狀態(tài)信息可用于評(píng)估與后臺(tái)組件相關(guān)聯(lián)的一個(gè)或多個(gè)條件。操作系統(tǒng)還可被配置成檢測(cè)在所保持的狀態(tài)信息中的變化且響應(yīng)于檢測(cè)變化,評(píng)估相關(guān)聯(lián)的條件。這可允許操作系統(tǒng)檢測(cè)在鎖存了后臺(tái)組件的觸發(fā)(例如,由于在激發(fā)觸發(fā)時(shí)并未滿足后臺(tái)組件的所有條件)之后何時(shí)執(zhí)行后臺(tái)組件??商鎿Q地或作為補(bǔ)充,操作系統(tǒng)可根據(jù)需要來(lái)獲得用于評(píng)估條件的相關(guān)信息,而不存儲(chǔ)這樣的信息為狀態(tài)信息。下文為用于管理后臺(tái)工作和前臺(tái)工作的發(fā)明系統(tǒng)、方法和設(shè)備有關(guān)的各種概念和實(shí)施例的更詳細(xì)的描述。應(yīng)意識(shí)到,上文所介紹且下文更詳細(xì)地討論的各種概念可以多種方式中的任何方式實(shí)施,因?yàn)樗_(kāi)的概念并不限于任何特定實(shí)施方式。例如,本公開(kāi)并不限于各個(gè)附圖所示的組件的特定安排,因?yàn)槠渌才乓彩呛线m的。提供具體實(shí)施方式
和應(yīng)用的這樣的例子只是出于說(shuō)明目的。此外,盡管本文所公開(kāi)的各種概念可用于資源受限的計(jì)算環(huán)境中的資源保存,這些概念并不限于用于這樣的環(huán)境中。例如,所公開(kāi)的技術(shù)的任何組合可不僅用于移動(dòng)設(shè)備中,而且也可用于臺(tái)式計(jì)算機(jī),服務(wù)器計(jì)算機(jī)等。圖I示出了根據(jù)某些實(shí)施例具有針對(duì)前臺(tái)工作和后臺(tái)工作的去耦邏輯的說(shuō)明性應(yīng)用架構(gòu)。在這樣的架構(gòu)中,前臺(tái)工作和后臺(tái)工作可提供為單獨(dú)的應(yīng)用組件,其具有適于允許操作系統(tǒng)單獨(dú)地管理前臺(tái)工作和后臺(tái)工作的接口。在下文中結(jié)合圖4描述了適用于單獨(dú)地管理前臺(tái)工作和后臺(tái)工作的操作系統(tǒng)的例子。在圖I所示的例子中,應(yīng)用100包括多個(gè)單獨(dú)組件,諸如一個(gè)或多個(gè)前臺(tái)組件(例如,前臺(tái)組件105)、一個(gè)或多個(gè)后臺(tái)組件(例如,工作項(xiàng)目110A、110B、110C……)和一個(gè)或多個(gè)其它組件(例如,共享的對(duì)象115AU15B……)。這些組件可實(shí)施為使得它們?cè)谶壿嬌媳舜巳ヱ?。例如,在某些?shí)施例中,組件可以以單獨(dú)的可執(zhí)行代碼片段來(lái)提供,其能彼此獨(dú)立地執(zhí)行。這些單獨(dú)的可執(zhí)行代碼片段可具有不同的入口點(diǎn)以由操作系統(tǒng)用來(lái)單獨(dú)地加載相對(duì)應(yīng)的組件。例如,在某些實(shí)施例中,操作系統(tǒng)可響應(yīng)于用戶的動(dòng)作來(lái)在前臺(tái)中啟動(dòng)該應(yīng)用100。在前臺(tái)中啟動(dòng)應(yīng)用100可包括經(jīng)由相對(duì)應(yīng)的入口點(diǎn)來(lái)起動(dòng)前臺(tái)組件105。另一方面,操作系統(tǒng)可響應(yīng)于檢測(cè)到一個(gè)或多個(gè)事件(例如,如上文所述的一個(gè)或多個(gè)觸發(fā))的發(fā)生而在后臺(tái)中啟動(dòng)應(yīng)用100。在后臺(tái)中啟動(dòng)應(yīng)用100可包括經(jīng)由不冋于后臺(tái)組件105的入口點(diǎn)的入口點(diǎn)起動(dòng)后臺(tái)組件,諸如工作項(xiàng)目110A。例如,在一個(gè)實(shí)施例中,工作項(xiàng)目IlOA可實(shí)施為動(dòng)態(tài)鏈接庫(kù)(DLL)且操作系統(tǒng)可通過(guò)加載DLL和執(zhí)行DLL的入口點(diǎn)功能在后臺(tái)中執(zhí)行工作項(xiàng)目IlOA0能造成應(yīng)用在前臺(tái)中啟動(dòng)的用戶動(dòng)作的例子包括(但不限于)用戶點(diǎn)擊對(duì)應(yīng)于該應(yīng)用的圖片(tile)或圖標(biāo),用戶登錄,用戶試圖訪問(wèn)針對(duì)其該應(yīng)用被識(shí)別為默認(rèn)應(yīng)用的文件或?qū)ο?,等等。能用作使?yīng)用在后臺(tái)中啟動(dòng)的觸發(fā)的事件的例子包括(但不限于)定時(shí)器到期,網(wǎng)絡(luò)連接性的變化,從服務(wù)器接收到新內(nèi)容(例如,電子郵件消息、介質(zhì)內(nèi)容等)可用于下載的通知等。但應(yīng)意識(shí)到這些動(dòng)作和事件只是說(shuō)明性的,因?yàn)槠渌鼊?dòng)作和事件也可造成應(yīng)用啟動(dòng)。例如,操作系統(tǒng)開(kāi)發(fā)人員、應(yīng)用開(kāi)發(fā)人員和/或用戶可規(guī)定造成應(yīng)用在前臺(tái)中啟動(dòng)的任何合適的動(dòng)作和使得應(yīng)用在后臺(tái)中啟動(dòng)的任何合適的事件。這樣的事件的例子包括(但不限于)由操作系統(tǒng)創(chuàng)建以組織工作使得資源高效和/或經(jīng)濟(jì)使用的合成事件,諸如指示指定用于保持的操作時(shí)段的開(kāi)始的事件,指示一個(gè)或多個(gè)外部服務(wù)器的高度可用性的事件和指示低成本網(wǎng)絡(luò)(例如,免費(fèi)無(wú)線網(wǎng)絡(luò))的可用性的事件。在某些實(shí)施例中,前臺(tái)組件和后臺(tái)組件可以這樣的方式在邏輯上去耦以便于并發(fā)執(zhí)行。在一例子中,前臺(tái)組件和后臺(tái)組件可實(shí)施為避免直接通信,這可減小掛起(hanging)的可能性(例如,前臺(tái)組件和后臺(tái)組件同時(shí)等待彼此來(lái)完成相應(yīng)的任務(wù),或者后臺(tái)組件在與前臺(tái)組件相同的線程上執(zhí)行,防止立即處理前臺(tái)活動(dòng))。因此,在某些實(shí)施例中,后臺(tái)組件可依靠操作系統(tǒng)來(lái)報(bào)告進(jìn)行到相對(duì)應(yīng)的前臺(tái)組件,例如向前臺(tái)組件通知后臺(tái)組件已完成了執(zhí)行。操作系統(tǒng)可經(jīng)由前臺(tái)組件提供的后臺(tái)狀態(tài)報(bào)告接口(諸如在圖I中所示的前臺(tái)組件105的“BG狀態(tài)”接口)來(lái)這樣做。這樣的報(bào)告機(jī)制可允許前臺(tái)組件和后臺(tái)組件一起工作來(lái)向用戶提供單個(gè)統(tǒng)一的體驗(yàn)。作為具體例子,當(dāng)后臺(tái)組件從服務(wù)器下載電子書(shū)時(shí),當(dāng)用戶啟動(dòng)前臺(tái)組件時(shí),下載進(jìn)展(progress )可經(jīng)由相對(duì)應(yīng)的前臺(tái)組件而傳送給用戶。去耦的另一說(shuō)明性方案是避免對(duì)共享數(shù)據(jù)直接操作,這可降低數(shù)據(jù)損壞的可能性。例如,在一個(gè)實(shí)施例中,前臺(tái)組件和后臺(tái)組件可使用針對(duì)某些或所有數(shù)據(jù)通信的持久存儲(chǔ)來(lái)降低數(shù)據(jù)損壞的可能性。在某些另外的實(shí)施例中,前臺(tái)組件和后臺(tái)組件可對(duì)共享對(duì)象操作,諸如圖I中所示的共享對(duì)象115A和115B,但僅通過(guò)調(diào)用共享對(duì)象上的一個(gè)或多個(gè)接口(未圖示)。這樣的共享對(duì)象可適于序列化數(shù)據(jù)存取,從而防止數(shù)據(jù)損壞。應(yīng)意識(shí)到,經(jīng)由操作系統(tǒng)和/或共享對(duì)象的通信只是能單獨(dú)地或組合地用于在邏輯上使后臺(tái)組件與前臺(tái)組件去耦的說(shuō)明性方式。也可使用其它去耦方式,因?yàn)楸竟_(kāi)的方面并不限于任何特定去耦方式。在圖I中所示的例子中,應(yīng)用100還包括規(guī)范120,規(guī)范120包含能由操作系統(tǒng)用于單獨(dú)地加載和管理前臺(tái)組件和后臺(tái)組件的信息。規(guī)范120可以以操作系統(tǒng)被配置成處理的任何合適格式來(lái)寫(xiě)。例如,規(guī)范120可呈以諸如可擴(kuò)展標(biāo)記語(yǔ)言(XML)之類的合適標(biāo)記語(yǔ)言寫(xiě)的應(yīng)用清單的形式。規(guī)范120可包含有用于操作系統(tǒng)的信息的任何合適組合。在一例子中,規(guī)范120可識(shí)別對(duì)應(yīng)于后臺(tái)組件(例如,工作項(xiàng)目110A、110B、110C……之一)的可執(zhí)行代碼和由操作系統(tǒng)分別用于開(kāi)始和停止后臺(tái)組件的執(zhí)行的相對(duì)應(yīng)的“開(kāi)始”和“取消”接口。在另一例子中,規(guī)范120可規(guī)定操作系統(tǒng)響應(yīng)之而執(zhí)行后臺(tái)組件的一個(gè)或多個(gè)觸發(fā)。在某些實(shí)施例中,規(guī)范120還可規(guī)定在操作系統(tǒng)執(zhí)行后臺(tái)組件之前要檢查的一個(gè)或多個(gè)條件。如在下文中結(jié)合圖5至圖7更詳細(xì)地討論的那樣,這些觸發(fā)和/或條件可由操作
系統(tǒng)用于確定何時(shí)執(zhí)行后臺(tái)組件例如以控制后臺(tái)組件的資源消耗。在又一例子中,規(guī)范120可規(guī)定由前臺(tái)組件實(shí)施的一個(gè)或多個(gè)后臺(tái)工作狀態(tài)報(bào)告接口(例如,在圖I中所示的前臺(tái)組件105的“BG狀態(tài)”接口)。如上文所討論的那樣,操作系統(tǒng)可使用這樣的接口來(lái)報(bào)告后臺(tái)組件的執(zhí)行進(jìn)展。同樣,上文所述的信息項(xiàng)只是說(shuō)明性的。應(yīng)用開(kāi)發(fā)人員可選擇在規(guī)范中包括任何合適信息組合以輔助操作系統(tǒng)單獨(dú)地加載和管理前臺(tái)組件和后臺(tái)組件??商鎿Q地或作為補(bǔ)充,操作系統(tǒng)提供商可請(qǐng)求某些選擇的信息項(xiàng)和/或工具在規(guī)范中提供以由操作系統(tǒng)用于單獨(dú)地加載和管理前臺(tái)組件和后臺(tái)組件。在某些實(shí)施例中,應(yīng)用的前臺(tái)組件和后臺(tái)組件可充分去耦使得操作系統(tǒng)能單獨(dú)地移動(dòng)前臺(tái)組件和后臺(tái)組件經(jīng)過(guò)其相應(yīng)生命周期。圖2示出了具有能并發(fā)執(zhí)行的前臺(tái)組件和后臺(tái)組件的應(yīng)用的說(shuō)明性狀態(tài)圖。在圖2所示的例子中,該應(yīng)用的狀態(tài)圖包括兩個(gè)單獨(dú)的組件狀態(tài)圖200和250。狀態(tài)圖200示出了該應(yīng)用的前臺(tái)組件的說(shuō)明性生命周期,且狀態(tài)圖250示出了該應(yīng)用的后臺(tái)組件的說(shuō)明性生命周期。在說(shuō)明性生命周期200中,前臺(tái)組件可處于三個(gè)不同的狀態(tài)之一活動(dòng)狀態(tài)205、暫停狀態(tài)210和非運(yùn)行狀態(tài)215。在活動(dòng)狀態(tài)205,前臺(tái)組件駐存在存儲(chǔ)器中或者活動(dòng)的分頁(yè)文件(paging file)中且由操作系統(tǒng)安排來(lái)執(zhí)行。在暫停狀態(tài)210,前臺(tái)組件仍駐存在存儲(chǔ)器中或者活動(dòng)的分頁(yè)文件中且不再由操作系統(tǒng)安排來(lái)執(zhí)行。在非運(yùn)行狀態(tài)215,前臺(tái)組件不再駐存在存儲(chǔ)器中,也不在任何活動(dòng)的分頁(yè)文件中。另一方面,在圖2中所示的說(shuō)明性生命周期250中,后臺(tái)組件可處于兩種不同狀態(tài)之一運(yùn)行狀態(tài)255和非運(yùn)行狀態(tài)260。在運(yùn)行狀態(tài)255,后臺(tái)組件駐存在存儲(chǔ)器中或者分頁(yè)文件中且由操作系統(tǒng)安排來(lái)執(zhí)行。在非運(yùn)行狀態(tài)260中,后臺(tái)組件不再駐存在存儲(chǔ)器中,也不在任何分頁(yè)文件中??商鎿Q地,后臺(tái)組件可在宿主環(huán)境(例如,容器)中執(zhí)行且當(dāng)后臺(tái)組件移到非運(yùn)行狀態(tài)260時(shí),宿主環(huán)境可被高速緩存。因此,在此例子中,包括前臺(tái)組件和后臺(tái)組件的整個(gè)應(yīng)用可具有六個(gè)不同的狀態(tài)<前臺(tái)活動(dòng),后臺(tái)運(yùn)行 >,〈前臺(tái)暫停,后臺(tái)運(yùn)行 >,〈前臺(tái)非運(yùn)行,后臺(tái)運(yùn)行 >,〈前臺(tái)活動(dòng),后臺(tái)非運(yùn)行 >,〈前臺(tái)暫停,后臺(tái)非運(yùn)行 > 和〈前臺(tái)非運(yùn)行,后臺(tái)非運(yùn)行 >。在前臺(tái)組件和后臺(tái)組件移動(dòng)經(jīng)過(guò)其相應(yīng)生命周期時(shí),應(yīng)用整體上可移動(dòng)經(jīng)過(guò)這六個(gè)狀態(tài),這在下文中更詳細(xì)地描述。在最后的狀態(tài)中,〈前臺(tái)非運(yùn)行,后臺(tái)非運(yùn)行〉,應(yīng)用可被認(rèn)為終止,因?yàn)閼?yīng)用既不在iu臺(tái)中運(yùn)彳丁也不在后臺(tái)中運(yùn)打。如上文所提到的那樣,由于前臺(tái)組件和后臺(tái)組件在邏輯上去耦,操作系統(tǒng)可能將一個(gè)組件從一個(gè)狀態(tài)移到另一個(gè)狀態(tài),無(wú)論另一組件的狀態(tài)如何且不會(huì)影響到另一組件。例如,在某些實(shí)施例中,前臺(tái)組件可從活動(dòng)狀態(tài)移到暫停狀態(tài)或者從暫停狀態(tài)移到活動(dòng)狀態(tài),而無(wú)論后臺(tái)組件的狀態(tài)如何且不會(huì)影響后臺(tái)組件的狀態(tài)。作為更具體的例子,當(dāng)前臺(tái)組件從活動(dòng)狀態(tài)205移到暫停狀態(tài)210時(shí),應(yīng)用整體上可從〈前臺(tái)活動(dòng),后臺(tái)運(yùn)行 > 移到〈前臺(tái)暫停,后臺(tái)運(yùn)行 > 或者從〈前臺(tái)活動(dòng),后臺(tái)非運(yùn)行 > 移到〈前臺(tái)暫停,后臺(tái)非運(yùn)行 >,這取決于后臺(tái)組件是處于運(yùn)行狀態(tài)255還是非運(yùn)行狀態(tài)260。應(yīng)意識(shí)到,雖然前臺(tái)組件和后臺(tái)組件可以以邏輯上去耦的方式來(lái)實(shí)施,操作系統(tǒng)可(盡管不需要)使用關(guān)于前臺(tái)組件的執(zhí)行的信息來(lái)管理后臺(tái)組件的執(zhí)行,或反之亦然。例
如,在一些實(shí)施例中,操作系統(tǒng)可僅在前臺(tái)組件暫?;虿贿\(yùn)行時(shí)安排后臺(tái)組件執(zhí)行??傊沟们芭_(tái)組件與后臺(tái)組件在邏輯上去耦可給予操作系統(tǒng)在組件的執(zhí)行之間創(chuàng)建依賴性或不創(chuàng)建依賴性的選項(xiàng)?,F(xiàn)轉(zhuǎn)至圖2中所示的說(shuō)明性生命周期200,操作系統(tǒng)可采用任何合適規(guī)則組來(lái)確定何時(shí)將前臺(tái)組件從一個(gè)狀態(tài)移到另一狀態(tài)。這樣的規(guī)則可被設(shè)計(jì)成防止未得到用戶關(guān)注的前臺(tái)組件消耗諸如電池電力、處理器周期和存儲(chǔ)器之類的資源。實(shí)施這些規(guī)則可改進(jìn)電池壽命和/或得到用戶關(guān)注的前臺(tái)組件的響應(yīng)性。在一個(gè)例子中,操作系統(tǒng)可將未得到用戶關(guān)注的前臺(tái)組件從暫停狀態(tài)移到非運(yùn)行狀態(tài)以收回存儲(chǔ)器資源。在一些實(shí)施例中,前臺(tái)組件可最初處于非運(yùn)行狀態(tài)且操作系統(tǒng)可響應(yīng)于用戶動(dòng)作(例如,用戶點(diǎn)擊對(duì)應(yīng)于該應(yīng)用的圖標(biāo)或圖片)來(lái)起動(dòng)前臺(tái)組件。起動(dòng)前臺(tái)組件可涉及將前臺(tái)組件和前臺(tái)組件可訪問(wèn)的任何輔助組件加載到存儲(chǔ)器中、初始化前臺(tái)組件和/或分配適當(dāng)資源。如果應(yīng)用的后臺(tái)組件已經(jīng)在起動(dòng)前臺(tái)組件時(shí)運(yùn)行且前臺(tái)組件加載到與后臺(tái)組件相同的進(jìn)程中,則某些輔助組件可已經(jīng)加載且某些資源可已經(jīng)分配。否則,可執(zhí)行完全啟動(dòng)。在任一事件中,前臺(tái)組件可在活動(dòng)狀態(tài)205中起動(dòng),且可由操作系統(tǒng)安排來(lái)執(zhí)行。在某些實(shí)施例中,一旦前臺(tái)組件從存儲(chǔ)裝置(storage)加載,操作系統(tǒng)就可通過(guò)調(diào)用前臺(tái)組件所提供的API函數(shù)來(lái)執(zhí)行前臺(tái)組件的入口點(diǎn)功能以初始化前臺(tái)組件。更具體而言,在圖I至圖2中所示的例子中,操作系統(tǒng)可調(diào)用由前臺(tái)組件實(shí)現(xiàn)的所謂“起動(dòng)(Start) ”方法。當(dāng)用戶與前臺(tái)組件主動(dòng)交互時(shí),操作系統(tǒng)可保持前臺(tái)組件在活動(dòng)狀態(tài)205中以避免干擾用戶體驗(yàn)。用戶可以以多種不同的方式來(lái)與前臺(tái)組件主動(dòng)交互,例如通過(guò)經(jīng)由用戶界面向前臺(tái)組件提供輸入。出于確定前臺(tái)組件是否保持在活動(dòng)狀態(tài)中的目的,如果前臺(tái)組件給出輸出(例如播放音頻和/或視頻)或完成用戶請(qǐng)求的任務(wù)(例如,在網(wǎng)絡(luò)連接上發(fā)送數(shù)據(jù),向文件寫(xiě)入、打印等),也可認(rèn)為用戶正與該前臺(tái)組件主動(dòng)交互。在一些實(shí)施例中,當(dāng)用戶不再與該前臺(tái)組件主動(dòng)交互時(shí),操作系統(tǒng)可將前臺(tái)組件從活動(dòng)狀態(tài)205移到暫停狀態(tài)210。這例如在用戶將注意力切換到不同應(yīng)用的窗口、最小化前臺(tái)組件的窗口、在某閾值時(shí)段內(nèi)未向該前臺(tái)組件提供任何輸入等時(shí)發(fā)生??商鎿Q地或作為補(bǔ)充,當(dāng)前臺(tái)組件不再執(zhí)行可認(rèn)為是前臺(tái)活動(dòng)的任何活動(dòng)時(shí),操作系統(tǒng)可將該前臺(tái)組件從活動(dòng)狀態(tài)205移到暫停狀態(tài)210??烧J(rèn)為是前臺(tái)活動(dòng)的活動(dòng)的例子包括(但不限于)音頻播放、設(shè)備同步等。在將前臺(tái)組件從活動(dòng)狀態(tài)205移到暫停狀態(tài)210之前,操作系統(tǒng)可向前臺(tái)組件告知前臺(tái)組件將要暫停,所以前臺(tái)組件可相應(yīng)地做出準(zhǔn)備,例如通過(guò)保存狀態(tài)和釋放分配的資源。例如,操作系統(tǒng)可通過(guò)調(diào)用前臺(tái)組件所提供的應(yīng)用編程接口(API)函數(shù)來(lái)告知前臺(tái)組件。在如圖I和圖2中所示的一個(gè)更具體的例子中,操作系統(tǒng)可調(diào)用前臺(tái)組件實(shí)現(xiàn)的所謂“靜默”方法,其可使前臺(tái)組件保存狀態(tài)和釋放資源(例如,文件、網(wǎng)絡(luò)連接等)。在某些實(shí)施方式中,靜默方法可包括操作系統(tǒng)代碼以明確地阻止調(diào)用靜默方法的線程(即,前臺(tái)組件的線程)被安排執(zhí)行。可作為使得整個(gè)前臺(tái)組件整體上暫停(例如,禁止對(duì)其做出安排)的補(bǔ)充來(lái)這樣做。前臺(tái)組件可保持阻止直到操作系統(tǒng)將前 臺(tái)組件移回到活動(dòng)狀態(tài)205。在一些實(shí)施例中,當(dāng)用戶例如通過(guò)將關(guān)注切回到前臺(tái)組件的窗口、將前臺(tái)組件的窗口從最小化狀態(tài)恢復(fù)、開(kāi)始向前臺(tái)組件提供輸入等開(kāi)始再次與前臺(tái)組件交互時(shí),操作系統(tǒng)可將前臺(tái)組件從暫停狀態(tài)210移回到活動(dòng)狀態(tài)205。這樣一來(lái),操作系統(tǒng)可簡(jiǎn)單地安排該前臺(tái)組件執(zhí)行。在一些實(shí)施例中,操作系統(tǒng)可附加地調(diào)用前臺(tái)組件提供的API函數(shù)以輔助該前臺(tái)組件恢復(fù)先前狀態(tài)。更具體而言,在圖I和圖2中所示的例子中,操作系統(tǒng)可調(diào)用由該前臺(tái)組件實(shí)現(xiàn)的“重新開(kāi)始”方法,其可使前臺(tái)組件取回所保存的狀態(tài)并請(qǐng)求適當(dāng)資源(例如,文件、網(wǎng)絡(luò)連接等)。在一些另外的實(shí)施例中,操作系統(tǒng)可通過(guò)將前臺(tái)組件從存儲(chǔ)器移除來(lái)將前臺(tái)組件從暫停狀態(tài)210移到非運(yùn)行狀態(tài)215。這樣做可例如減小存儲(chǔ)器使用或者允許更新該前臺(tái)組件的可執(zhí)行代碼。如果在操作系統(tǒng)將該前臺(tái)組件移到非運(yùn)行狀態(tài)215時(shí)該應(yīng)用并不運(yùn)行在后臺(tái)中,應(yīng)用可變得完全終止。否則,后臺(tái)組件可繼續(xù)運(yùn)行,而不論前臺(tái)組件改變狀態(tài)。如果在前臺(tái)組件已移到非運(yùn)行狀態(tài)215時(shí)用戶開(kāi)始再次與前臺(tái)組件交互,則操作系統(tǒng)可再次起動(dòng)該前臺(tái)組件,這可類似于最初起動(dòng)該前臺(tái)組件,如上文所討論的那樣。應(yīng)意識(shí)到,操作系統(tǒng)可選擇任何合適的規(guī)則組和技術(shù)來(lái)確定何時(shí)將前臺(tái)組件從活動(dòng)狀態(tài)205移到暫停狀態(tài)210和何時(shí)將前臺(tái)組件從暫停狀態(tài)210移到非運(yùn)行狀態(tài)215。這些規(guī)則可反映出與暫停前臺(tái)組件相關(guān)聯(lián)的預(yù)期益處和預(yù)期成本之間所希望的平衡,和與將前臺(tái)組件從存儲(chǔ)器移除相關(guān)聯(lián)的預(yù)期益處與預(yù)期成本之間的所希望的平衡。例如,雖然暫停前臺(tái)組件可導(dǎo)致某些資源節(jié)省,可由前臺(tái)組件準(zhǔn)備暫停和從暫停重新開(kāi)始造成附加的處理開(kāi)銷(xiāo)。而且,當(dāng)前臺(tái)組件首先從暫停重新開(kāi)始且試圖重新獲得資源(例如,重新打開(kāi)文件,再建立網(wǎng)絡(luò)連接等)時(shí)用戶可體驗(yàn)到遲緩(sluggishness)。同樣,雖然從存儲(chǔ)器移除前臺(tái)組件可減少存儲(chǔ)器使用,但前臺(tái)組件的重新起動(dòng)可以造成附加的處理開(kāi)銷(xiāo),并且在前臺(tái)組件重新加載或重新初始化時(shí)用戶可以體驗(yàn)到遲緩。轉(zhuǎn)至圖2中所示的說(shuō)明性生命周期250,后臺(tái)組件可最初處于非運(yùn)行狀態(tài)260。操作系統(tǒng)可在某些實(shí)施例中響應(yīng)于檢測(cè)到一個(gè)或多個(gè)事件的發(fā)生來(lái)起動(dòng)該后臺(tái)組件。如在下文中結(jié)合圖5至圖7更詳細(xì)地討論的那樣,在一些說(shuō)明性實(shí)施例中,在確定何時(shí)起動(dòng)后臺(tái)組件時(shí)可考慮兩種類型的事件(即,觸發(fā)和條件)。起動(dòng)后臺(tái)組件可涉及將后臺(tái)組件和后臺(tái)組件可訪問(wèn)的任何輔助組件加載到存儲(chǔ)器中、初始化后臺(tái)組件和/或分配適當(dāng)?shù)馁Y源。如果應(yīng)用的前臺(tái)組件已經(jīng)在起動(dòng)后臺(tái)組件時(shí)運(yùn)行且后臺(tái)組件加載到與前臺(tái)組件相同的進(jìn)程中,則某些輔助組件可已經(jīng)被加載且某些資源可已經(jīng)被分配。否則,可執(zhí)行完全啟動(dòng)。在任一事件中,后臺(tái)組件可移到運(yùn)行狀態(tài)255?!┖笈_(tái)組件從存儲(chǔ)裝置(storage)加載,操作系統(tǒng)就可通過(guò)調(diào)用后臺(tái)組件所提供的API函數(shù)來(lái)執(zhí)行后臺(tái)組件的入口點(diǎn)功能以初始化后臺(tái)組件。在如圖I至圖2所示的更特定的例子中,操作系統(tǒng)可調(diào)用由后臺(tái)組件實(shí)施的所謂的“起動(dòng)(Start) ”方法。在一些實(shí)施例中,操作系統(tǒng)可在起動(dòng)了后臺(tái)組件之后監(jiān)視該后臺(tái)組件的進(jìn)展。某些后臺(tái)組件(例如,圖I所示的工作項(xiàng)目110A、110B、110C……)每一個(gè)可對(duì)應(yīng)于離散的后臺(tái)任務(wù)(例如,從服務(wù)器下載一條內(nèi)容,檢查軟件更新的可用性,例程病毒掃描等)。照此,這些后臺(tái)組件不預(yù)期無(wú)限期地執(zhí)行。如果后臺(tái)組件在運(yùn)行了某閾值時(shí)段后并未做出充分進(jìn)展,則操作系統(tǒng)可停止該后臺(tái)組件執(zhí)行,從而將后臺(tái)組件移到非運(yùn)行狀態(tài)260。操作系統(tǒng)可使用監(jiān)視計(jì)算任務(wù)進(jìn)展的任何已知的技術(shù)來(lái)監(jiān)視后臺(tái)組件的進(jìn)展。可替換地或作為補(bǔ)充,應(yīng)用可提供一個(gè)或多個(gè)工具供操作系統(tǒng)用于監(jiān)視進(jìn)展。例如,后臺(tái)組件可實(shí)現(xiàn)操作系統(tǒng)可調(diào)用的“檢查進(jìn)展”接口以得到進(jìn)展信息(例如,任務(wù)完成的百分比和/
或后臺(tái)組件是否等待來(lái)自另一組件的響應(yīng)或者等待某些資源變得可用)。此接口可在與應(yīng)用相關(guān)聯(lián)的規(guī)范中規(guī)定,諸如圖I中所示的規(guī)范120。在一些實(shí)施例中,操作系統(tǒng)可向該后臺(tái)組件告知該后臺(tái)組件將要停止,因此后臺(tái)組件能相應(yīng)地做出準(zhǔn)備,例如通過(guò)保存狀態(tài)和釋放分配的資源。這可例如通過(guò)調(diào)用后臺(tái)組件所提供的API函數(shù)來(lái)進(jìn)行。更具體而言,在圖I至圖2所示的例子中,操作系統(tǒng)可調(diào)用后臺(tái)組件實(shí)現(xiàn)的所謂的“取消”方法,之后,在操作系統(tǒng)將后臺(tái)組件移到非運(yùn)行狀態(tài)260之前,可給予后臺(tái)組件某小的時(shí)間量(例如,數(shù)秒)。如果后臺(tái)組件繼續(xù)以充分速率取得進(jìn)展,則操作系統(tǒng)可允許后臺(tái)組件運(yùn)行完成。在那種情況下,操作系統(tǒng)也可將后臺(tái)組件移到非運(yùn)行狀態(tài)260,例如通過(guò)將后臺(tái)組件從存儲(chǔ)器去除。如果在操作系統(tǒng)將該后臺(tái)組件移到非運(yùn)行狀態(tài)215時(shí)該應(yīng)用并不在前臺(tái)中運(yùn)行,則應(yīng)用可變得完全終止。否則,前臺(tái)組件可繼續(xù)運(yùn)行(例如,在活動(dòng)狀態(tài)205或者在暫停狀態(tài)210),而不考慮后臺(tái)組件改變狀態(tài)。雖然在圖2中示出且在上文中描述了應(yīng)用組件生命周期的詳細(xì)例子,應(yīng)了解提供這些例子只是出于說(shuō)明目的。本公開(kāi)的各方面并不限于生命周期的任何限定,也不限于管理生命周期的任何特定方式。例如,前臺(tái)組件可從圖2中所示的那些狀態(tài)來(lái)移動(dòng)經(jīng)過(guò)不同的狀態(tài)集合,且操作系統(tǒng)可采用不同的策略來(lái)確定何時(shí)將前臺(tái)組件從一個(gè)狀態(tài)移到另一個(gè)狀態(tài)且對(duì)于后臺(tái)組件也類似。作為另一例子,操作系統(tǒng)可將相同后臺(tái)組件或不同后臺(tái)組件的一個(gè)或多個(gè)實(shí)例加載到相同的環(huán)境(例如,軟件容器)中,且僅當(dāng)這些實(shí)例中并無(wú)實(shí)例運(yùn)行時(shí)可將該環(huán)境從存儲(chǔ)器移除。作為又一例子,操作系統(tǒng)可保持后臺(tái)組件無(wú)限期地加載以提高效率。如上文所討論的那樣,在某些實(shí)施例中,如果前臺(tái)組件和后臺(tái)組件能以任一方式來(lái)執(zhí)行,則操作系統(tǒng)可選擇將應(yīng)用的前臺(tái)組件和后臺(tái)組件加載到相同的進(jìn)程或單獨(dú)的進(jìn)程中。在一個(gè)例子中,操作系統(tǒng)可默認(rèn)將前臺(tái)組件和后臺(tái)組件加載到單獨(dú)的進(jìn)程中,除非應(yīng)用或用戶做出其它規(guī)定。在另一例子中,操作系統(tǒng)可加載由應(yīng)用單獨(dú)于相對(duì)應(yīng)的前臺(tái)組件所提供的后臺(tái)組件,但是可將操作系統(tǒng)提供的后臺(tái)組件與后臺(tái)組件針對(duì)其而工作的應(yīng)用共置。也可采用其它合適規(guī)則,因?yàn)楸竟_(kāi)的各方面并不以此方式受限制。
圖3A示出了其中操作系統(tǒng)305將在進(jìn)程320中的前臺(tái)組件310和在單獨(dú)進(jìn)程325中的后臺(tái)組件315加載到存儲(chǔ)器300內(nèi)的例子。以此方式隔離后臺(tái)工作與前臺(tái)工作可方便資源管理。例如,在某些實(shí)施例中,操作系統(tǒng)可在受控制的執(zhí)行環(huán)境(例如,如本領(lǐng)域中已知的沙箱)中運(yùn)行該進(jìn)程325,受控制的環(huán)境被構(gòu)造為允許進(jìn)程在其中運(yùn)行以僅存取指定的資源。以此方式,操作系統(tǒng)可將某些規(guī)定量的資源(例如,某些規(guī)定的CPU時(shí)間、存儲(chǔ)器的百分比等)分配給受控制的執(zhí)行環(huán)境以確保后臺(tái)組件315不消耗多于規(guī)定量的資源。受控制的執(zhí)行環(huán)境可在某些實(shí)施方式中被指定用于運(yùn)行后臺(tái)組件使得其它應(yīng)用的后臺(tái)組件也可在沙箱中運(yùn)行且受到相同的資源限制。在單獨(dú)的進(jìn)程中隔離后臺(tái)工作與前臺(tái)工作也可幫助減少存儲(chǔ)器占用,因?yàn)楫?dāng)應(yīng)用僅執(zhí)行后臺(tái)工作時(shí),操作系統(tǒng)可避免加載僅與用戶界面(UI)功能有關(guān)的可執(zhí)行代碼(例如,庫(kù))。例如,在其中前臺(tái)工作與后臺(tái)工作被實(shí)施為單獨(dú)組件的 實(shí)施例中,π相關(guān)的功能可僅存在于前臺(tái)組件中,其無(wú)需加載于主管(host)后臺(tái)組件的進(jìn)程中。圖3B示出了其中操作系統(tǒng)355將同一進(jìn)程370中的前臺(tái)組件360和后臺(tái)組件356加載到存儲(chǔ)器350內(nèi)的例子。以此方式共置前臺(tái)工作和后臺(tái)工作可允許前臺(tái)組件360和后臺(tái)組件365共擔(dān)啟動(dòng)成本。因此,如果組件之一頻繁運(yùn)行,例如,如果一個(gè)或多個(gè)用戶頻繁地與該應(yīng)用交互,或者如果該應(yīng)用頻繁地執(zhí)行后臺(tái)工作,那么將這些組件共置可以是有益的。在圖3B中所示的例子中,前臺(tái)組件360和后臺(tái)組件365分別由操作系統(tǒng)355作為單獨(dú)線程(線程380和385)來(lái)起動(dòng)。以此方式,操作系統(tǒng)355仍能單獨(dú)地管理前臺(tái)組件360和后臺(tái)組件365的執(zhí)行。例如,操作系統(tǒng)可阻止線程380 (和因此前臺(tái)組件360)執(zhí)行,同時(shí)允許線程385 (和因此后臺(tái)組件365)執(zhí)行,且反之亦然。因此,在某些實(shí)施例中,操作系統(tǒng)可適于基于在易于實(shí)施的資源管理與降低的啟動(dòng)成本之間的所需權(quán)衡來(lái)決定共置還是分開(kāi)前臺(tái)組件和后臺(tái)組件。其它考慮(例如,動(dòng)態(tài)操作條件,例如存儲(chǔ)器和/或處理器使用,活動(dòng)進(jìn)程的數(shù)量等)也可考慮在內(nèi),因?yàn)楸竟_(kāi)的各方面并不限于共置或分開(kāi)前臺(tái)組件和后臺(tái)組件的任何特定原因。在一個(gè)例子中,在決定在實(shí)施方式(在該實(shí)施方式中,可以通過(guò)在后臺(tái)組件執(zhí)行時(shí)保持前臺(tái)組件中的某些或全部線程可運(yùn)行來(lái)防止死鎖)中共置還是分開(kāi)前臺(tái)組件和后臺(tái)組件時(shí)可考慮存儲(chǔ)器和/或處理器周期的消耗。在另一例子中,可以例如通過(guò)分開(kāi)有程序缺陷的(buggy)后臺(tái)組件來(lái)減少對(duì)其它前臺(tái)組件和/或后臺(tái)組件的干擾來(lái)考慮軟件可靠性。圖4示出了適于單獨(dú)地管理后臺(tái)工作和前臺(tái)工作的操作系統(tǒng)400的例子。在此例子中,操作系統(tǒng)400實(shí)施用于后臺(tái)組件的代理執(zhí)行模型,其中,每個(gè)應(yīng)用向操作系統(tǒng)400注冊(cè)預(yù)期在后臺(tái)中運(yùn)行的一個(gè)或多個(gè)應(yīng)用組件,且操作系統(tǒng)400最終控制每個(gè)后臺(tái)組件何時(shí),何處執(zhí)行和/或執(zhí)行多久。以此方式,操作系統(tǒng)400可有效地控制后臺(tái)組件的資源消耗。在圖4中所示的例子中,操作系統(tǒng)400使用代理基礎(chǔ)結(jié)構(gòu)(BI) 405和多個(gè)代理來(lái)實(shí)現(xiàn)代理的執(zhí)行模型。在此例子中,操作系統(tǒng)400被預(yù)先編程為具有代理,每個(gè)代理被配置為管理相應(yīng)類型的資源和/或處理相應(yīng)類型的事件。例如,操作系統(tǒng)400可包括時(shí)間代理415A,網(wǎng)絡(luò)連接代理415B,遠(yuǎn)程喚醒代理415C和系統(tǒng)事件代理415D,如圖所示的那樣。這樣的框架可易于擴(kuò)展,例如通過(guò)允許第三方提供新的代理,新的代理適于管理新類型的資源和/或處理新類型的事件(例如,可提供位置代理使得后臺(tái)工作的執(zhí)行可取決于地理位置)。但是,應(yīng)意識(shí)到代理執(zhí)行模型不需要使用具有代理基礎(chǔ)結(jié)構(gòu)和多個(gè)代理的框架。而是,在可替換實(shí)施例中,代理基礎(chǔ)結(jié)構(gòu)和個(gè)體代理的功能可由單個(gè)操作系統(tǒng)組件或者操作系統(tǒng)外的一個(gè)或多個(gè)組件提供。如在下文中結(jié)合圖8至圖9更詳細(xì)地討論的那樣,代理基礎(chǔ)結(jié)構(gòu)405可負(fù)責(zé)管理諸如工作項(xiàng)目的后臺(tái)組件的執(zhí)行。例如,在某些實(shí)施例中,代理基礎(chǔ)結(jié)構(gòu)405可提供接口(例如,圖4中所示的“注冊(cè)”接口)以由應(yīng)用用于注冊(cè)后臺(tái)組件進(jìn)行代理執(zhí)行。注冊(cè)后臺(tái)組件可包括從應(yīng)用接收后臺(tái)組件的標(biāo)識(shí)和何時(shí)運(yùn)行后臺(tái)組件的指示(例如,通過(guò)規(guī)定一個(gè)或多個(gè)觸發(fā)和/或條件)。例如,應(yīng)用可提供識(shí)別實(shí)現(xiàn)后臺(tái)組件的軟件對(duì)象的對(duì)象識(shí)別符,且可識(shí)別響應(yīng)之而執(zhí)行后臺(tái)組件的事件。在一些實(shí)施例中,代理基礎(chǔ)結(jié)構(gòu)405可在每當(dāng)檢測(cè)到發(fā)生相對(duì)應(yīng)事件時(shí)運(yùn)行后臺(tái)組件??商鎿Q地,代理基礎(chǔ)結(jié)構(gòu)405可根據(jù)適當(dāng)?shù)馁Y源管理策略而實(shí)施附加約束和/或限制。例如,附加約束和/或限制可反映被設(shè)計(jì)為防止單個(gè)應(yīng)用消耗太多資源和/或防止已
安裝但不用的應(yīng)用消耗任何資源的策略。在一個(gè)實(shí)施例中,可基于每個(gè)應(yīng)用由用戶使用了多少來(lái)向不同的應(yīng)用分配資源。例如,分配給應(yīng)用的資源量可作為所有應(yīng)用的使用百分比而與應(yīng)用的使用成比例。這樣的策略在常見(jiàn)情形中是合乎需要的,在常見(jiàn)情形中用戶安裝大量(例如數(shù)百)應(yīng)用但在連續(xù)基礎(chǔ)上僅使用少量(例如,10個(gè)、15個(gè)或20個(gè))。在一些另外的實(shí)施例中,代理基礎(chǔ)結(jié)構(gòu)405可監(jiān)視后臺(tái)組件在執(zhí)行期間的進(jìn)展和/或資源消耗。這可使用用來(lái)監(jiān)視與軟件組件相關(guān)聯(lián)的進(jìn)展和/或資源消耗的任何已知的技術(shù)來(lái)進(jìn)行??商鎿Q地或附加地,代理基礎(chǔ)結(jié)構(gòu)可調(diào)用后臺(tái)組件提供的界面來(lái)報(bào)告進(jìn)展和/或資源消耗。代理基礎(chǔ)結(jié)構(gòu)405可從應(yīng)用規(guī)范發(fā)現(xiàn)這樣的接口,例如圖I中所示的規(guī)范120。如果后臺(tái)組件不以充分速率取得進(jìn)展,或者如果后臺(tái)組件消耗了太多資源,代理基礎(chǔ)結(jié)構(gòu)405可停止后臺(tái)組件的執(zhí)行。同樣,停止后臺(tái)組件的決定可基于任何適當(dāng)?shù)馁Y源
管理策略。在另外某些實(shí)施例中,代理基礎(chǔ)結(jié)構(gòu)405可負(fù)責(zé)向前臺(tái)組件報(bào)告后臺(tái)工作的進(jìn)展。這可幫助避免在后臺(tái)組件與前臺(tái)組件之間的直接通信,而這如上文所解釋的那樣可方便前臺(tái)組件與后臺(tái)組件之間的邏輯去耦。在一個(gè)例子中,代理基礎(chǔ)結(jié)構(gòu)405可向前臺(tái)組件通知后臺(tái)組件何時(shí)成功完成,從而前臺(tái)組件可執(zhí)行任何合適的處理。例如,當(dāng)在后臺(tái)中完成下載時(shí),代理基礎(chǔ)結(jié)構(gòu)405可通知相對(duì)應(yīng)的前臺(tái)組件,而前臺(tái)組件又可通知用戶新的內(nèi)容可用。在另一例子中,代理基礎(chǔ)結(jié)構(gòu)405可向相對(duì)應(yīng)的前臺(tái)組件通知何時(shí)由于不充分的進(jìn)展或過(guò)量資源消耗而停止后臺(tái)組件。前臺(tái)組件可(盡管不需要)向用戶報(bào)告失敗,用戶可以免除后臺(tái)組件所違反的資源管理策略地來(lái)選擇重新起動(dòng)后臺(tái)組件。但應(yīng)意識(shí)到前臺(tái)組件在生成通知時(shí)可不是活動(dòng)的。在這樣的情形中,代理基礎(chǔ)結(jié)構(gòu)405可向前臺(tái)組件通知前臺(tái)組件未來(lái)在何時(shí)變得活動(dòng)(例如,當(dāng)用戶點(diǎn)擊對(duì)應(yīng)于前臺(tái)組件的圖片或圖標(biāo)時(shí))??商鎿Q地,代理基礎(chǔ)結(jié)構(gòu)405自身可處置該通知,例如通過(guò)通知用戶后臺(tái)任務(wù)成功或失敗。返回至圖4,在某些實(shí)施例中,應(yīng)用可規(guī)定所謂的“代理事件”為后臺(tái)組件將響應(yīng)之而執(zhí)行的事件。代理事件可為由諸如時(shí)間代理415A、網(wǎng)絡(luò)連接代理415B、遠(yuǎn)程喚醒代理415C、系統(tǒng)事件代理41 或某些其它代理之類的代理組件用信號(hào)通知的事件。每個(gè)這樣的代理可適于在某些規(guī)定的情況下用信號(hào)通知事件。例如,時(shí)間代理415可適于在絕對(duì)時(shí)間、定期間隔(regular interval)或在與系統(tǒng)操作有關(guān)的某些“方便”時(shí)間(例如,用于執(zhí)行任選活動(dòng)的保持時(shí)間)用信號(hào)通知事件,當(dāng)數(shù)據(jù)在網(wǎng)絡(luò)套接字(network socket)上可用時(shí),網(wǎng)絡(luò)連接代理415B可適于用信號(hào)通知事件,遠(yuǎn)程喚醒代理415C可適于轉(zhuǎn)發(fā)從一個(gè)或多個(gè)云服務(wù)器到達(dá)的事件,且系統(tǒng)事件代理41 可適于用信號(hào)通知諸如用戶登陸或退出的事件。在一些實(shí)施方式中,代理可提供接口(例如,圖4所示的“請(qǐng)求”接口),應(yīng)用可通過(guò)該接口來(lái)請(qǐng)求代理在應(yīng)用規(guī)定的某些情形下用信號(hào)通知代理事件。以此方式,應(yīng)用可告知該操作系統(tǒng)計(jì)劃何時(shí)運(yùn)行后臺(tái)組件。例如,如在下文中結(jié)合圖5至圖6更詳細(xì)地討論的,代理可允許應(yīng)用在激發(fā)了一個(gè)或多個(gè)“觸發(fā)”時(shí)請(qǐng)求用信號(hào)通知代理事件。此外,除了激發(fā)觸發(fā)之外,應(yīng)用還可規(guī)定在用信號(hào)通知代理事件之前要滿足的一個(gè)或多個(gè)“條件”。

類似于代理基礎(chǔ)結(jié)構(gòu)405,代理在某些實(shí)施例中可例如經(jīng)由一個(gè)或多個(gè)約束和/或限制實(shí)施一個(gè)或多個(gè)適當(dāng)?shù)馁Y源管理策略。例如,在某些實(shí)例中,代理可不用信號(hào)通知代理事件,即使在激發(fā)了觸發(fā)且滿足了所有條件時(shí),因?yàn)橛眯盘?hào)通知代理事件可違反某些資源管理策略。作為更具體的例子,時(shí)間代理415A可限制每天代理事件的復(fù)發(fā)次數(shù),從而請(qǐng)求代理事件的應(yīng)用不在后臺(tái)中每天執(zhí)行超過(guò)該次數(shù)。雖然在上文中討論了代理的若干例子,應(yīng)意識(shí)到這些代理只是說(shuō)明性的。在各種實(shí)施例中,操作系統(tǒng)可包括適于實(shí)施合適資源管理策略的代理的任何合適的組合。這些策略中的某些可在性質(zhì)上為靜態(tài)的,例如通過(guò)規(guī)定在固定時(shí)間量應(yīng)用可消耗的固定資源量。其它策略可為動(dòng)態(tài)的且可基于操作條件對(duì)消耗施加限制(例如,系統(tǒng)是否靠電池來(lái)運(yùn)行,CPU和/或存儲(chǔ)器使用是否保持為高持續(xù)了一段時(shí)間等)。另外的策略可組合靜態(tài)與動(dòng)態(tài)方面。再次返回至圖4所示的例子,操作系統(tǒng)400附加地包括多個(gè)后臺(tái)組件,例如工作項(xiàng)目410A,410B,410C……類似于圖I所示的工作項(xiàng)目110A-C,工作項(xiàng)目410A-C可在后臺(tái)中執(zhí)行以為應(yīng)用工作,且可由操作系統(tǒng)400以與應(yīng)用提供的后臺(tái)組件相同的方式管理。例如,操作系統(tǒng)400可對(duì)于工作項(xiàng)目410A-C實(shí)施與對(duì)于工作項(xiàng)目110A-C所實(shí)施的相同的資源管理策略。但是,在可替換實(shí)施例中,操作系統(tǒng)400可信任工作項(xiàng)目410A-C,但并不信任工作項(xiàng)目110A-C,因?yàn)楣ぷ黜?xiàng)目410A-C為操作系統(tǒng)400的部分,而工作項(xiàng)目110A-C包含應(yīng)用提供的代碼。因此,操作系統(tǒng)400可放松對(duì)工作項(xiàng)目410A-C實(shí)施的策略,因?yàn)楣ぷ黜?xiàng)目410A-C是被信任的。例如,操作系統(tǒng)400可將工作項(xiàng)目110A-C加載到與前臺(tái)組件分開(kāi)的沙箱內(nèi),而可將工作項(xiàng)目410A-C加載到與相應(yīng)前臺(tái)組件相同的進(jìn)程中。同樣,應(yīng)意識(shí)到本公開(kāi)的各方面不限于使用來(lái)自任何特定源的后臺(tái)組件。后臺(tái)組件在各種實(shí)施例中可由操作系統(tǒng)開(kāi)發(fā)人員、應(yīng)用開(kāi)發(fā)人員和/或任何其它第三方軟件提供商寫(xiě)出。圖5示出根據(jù)某些實(shí)施例可由代理組件響應(yīng)于安排代理事件的請(qǐng)求而進(jìn)行的說(shuō)明性過(guò)程500,且圖6示出了可由代理組件結(jié)合過(guò)程500使用的說(shuō)明性數(shù)據(jù)結(jié)構(gòu)600。例如,過(guò)程500可由圖4中所示的代理415A-D之一響應(yīng)于調(diào)用“請(qǐng)求”接口的應(yīng)用來(lái)執(zhí)行。在動(dòng)作505,代理組件可接收對(duì)代理事件的請(qǐng)求。在各種實(shí)施例中,該請(qǐng)求可包括代理可用于決定何時(shí)用信號(hào)通知請(qǐng)求的代理事件的信息項(xiàng)的任何組合。例如,代理的API可指示特定所需信息項(xiàng)以允許代理實(shí)施一個(gè)或多個(gè)資源管理策略。這樣的信息項(xiàng)的例子可包括(但不限于)請(qǐng)求者(例如,應(yīng)用)的標(biāo)識(shí)、將響應(yīng)之而用信號(hào)通知所請(qǐng)求的代理事件的一個(gè)或多個(gè)觸發(fā)、當(dāng)用信號(hào)通知所請(qǐng)求的代理事件時(shí)要滿足的一個(gè)或多個(gè)條件、所請(qǐng)求的代理事件的預(yù)期目的的指示(例如,使操作系統(tǒng)執(zhí)行選擇的后臺(tái)組件)以及任何其它的合適信息項(xiàng)。在動(dòng)作510,代理組件可向所請(qǐng)求的代理事件分配代理事件ID。此代理事件ID可對(duì)于代理事件的每個(gè)請(qǐng)求是唯一的。例如,如果兩個(gè)應(yīng)用每個(gè)經(jīng)由代理的API的不同調(diào)用而請(qǐng)求代理事件,那么代理可分配不同的代理事件ID,即使下面的觸發(fā)是相同的。以此方式,當(dāng)下面的觸發(fā)激發(fā)時(shí),代理可用信號(hào)通知兩個(gè)不同的代理事件,每個(gè)代理事件具有不同的代理事件ID。盡管并未要求,唯一的代理事件ID可為有益的,因?yàn)椴煌膽?yīng)用可為代理事件規(guī)定不同的條件,即使觸發(fā)是相同的。而且,可取決于特定應(yīng)用而不同地采用由代理實(shí)施的一個(gè)或多個(gè)資源管理策略。因此,唯一的代理事件ID可用于確保適當(dāng)?shù)臈l件集合(無(wú)論是由
相對(duì)應(yīng)的應(yīng)用施加還是由操作系統(tǒng)施加)被應(yīng)用于控制用信號(hào)通知代理事件。在動(dòng)作515,代理可識(shí)別將響應(yīng)之而用信號(hào)通知所請(qǐng)求的代理事件的一個(gè)或多個(gè)觸發(fā)。觸發(fā)可為代理被編程來(lái)檢測(cè)的任何事件。在一例子中,觸發(fā)可為用戶相關(guān)的事件,諸如用戶登錄或退出、用戶變得活動(dòng)(例如,通過(guò)提供諸如鍵入、移動(dòng)鼠標(biāo)、講話等任何輸入)、用戶變得不活動(dòng)(例如,通過(guò)未在至少閾值時(shí)段提供任何輸入)、用戶開(kāi)始用戶會(huì)話、用戶請(qǐng)求下載、用戶初始化打印工作等。在另一例子中,觸發(fā)可為與系統(tǒng)相關(guān)的事件,諸如定時(shí)器到期、消息或通知(例如,SMS消息或操作者消息通知)到達(dá)、網(wǎng)絡(luò)狀態(tài)的變化、網(wǎng)絡(luò)信道復(fù)位、因特網(wǎng)變得可用或不可用、完成軟件更新等。在又一例子中,觸發(fā)可為與應(yīng)用相關(guān)的事件,諸如應(yīng)用請(qǐng)求立即用信號(hào)通知代理事件以使得操作系統(tǒng)立刻起動(dòng)后臺(tái)組件。在另一例子中,觸發(fā)可為由操作系統(tǒng)組件(例如,代理)通過(guò)組合來(lái)自不同源的一個(gè)或多個(gè)事件的知識(shí),一個(gè)或多個(gè)系統(tǒng)條件和/或一個(gè)或多個(gè)系統(tǒng)策略來(lái)創(chuàng)建的合成事件。這樣的合成事件的具體例子可為“維持時(shí)間”,其可指示被指定用于維持的操作時(shí)段的開(kāi)始。雖然應(yīng)用可規(guī)定請(qǐng)求的代理事件的一個(gè)觸發(fā),在某些實(shí)例中可規(guī)定多個(gè)觸發(fā)。例如,代理可將觸發(fā)對(duì)待為選項(xiàng)(alternatives),使得倘若滿足了任何和所有規(guī)定的條件,任一觸發(fā)的激發(fā)可造成用信號(hào)通知所請(qǐng)求的代理事件??商鎿Q地,代理可將某些或所有觸發(fā)對(duì)待為合取項(xiàng)(conjuncts),或者可允許應(yīng)用規(guī)定觸發(fā)的任何合適邏輯組合。在另外的一些實(shí)施例中,可提供多個(gè)代理,每個(gè)代理對(duì)于單個(gè)觸發(fā)做出響應(yīng),且可一起實(shí)施多個(gè)觸發(fā)的組

口 ο在動(dòng)作520,代理可與在動(dòng)作510分配的代理事件ID相關(guān)聯(lián)地存儲(chǔ)在動(dòng)作515識(shí)別的一個(gè)或多個(gè)觸發(fā)。觸發(fā)可以以任何合適方式存儲(chǔ)。在一些實(shí)施例中,每個(gè)觸發(fā)可存儲(chǔ)為觸發(fā)配置和觸發(fā)類型。作為另一例子,代理可在圖6所示的說(shuō)明性數(shù)據(jù)結(jié)構(gòu)600中存儲(chǔ)觸發(fā)和代理事件ID。在此實(shí)施例中,數(shù)據(jù)結(jié)構(gòu)600可包括多個(gè)實(shí)體,每個(gè)實(shí)體對(duì)應(yīng)于所請(qǐng)求的代理事件且具有至少三個(gè)字段(field):用于存儲(chǔ)代理事件ID的字段605,用于存儲(chǔ)觸發(fā)的字段610和用于存儲(chǔ)條件的字段615。例如,在第一說(shuō)明性條目中,代理事件ID “BE/’與多個(gè)可替換觸發(fā)^/’、^,/’……和單個(gè)條件“Cu”相關(guān)聯(lián)。盡管未圖示,數(shù)據(jù)結(jié)構(gòu)600中的條目可具有附加字段,例如以存儲(chǔ)可允許代理實(shí)施一個(gè)或多個(gè)資源管理策略的其它信息項(xiàng)。返回至圖5,在動(dòng)作525,代理可確定是否規(guī)定了在用信號(hào)通知所請(qǐng)求的代理事件時(shí)要滿足的一個(gè)或多個(gè)條件。如果規(guī)定了一個(gè)或多個(gè)條件,那么代理可繼續(xù)在動(dòng)作530識(shí)別條件。否則,代理可跳過(guò)動(dòng)作530和535且直接前進(jìn)到動(dòng)作540。如上文所述的那樣,可由請(qǐng)求代理事件的應(yīng)用來(lái)規(guī)定條件,例如以告知操作系統(tǒng)相關(guān)聯(lián)的后臺(tái)組件可能執(zhí)行有用工作的一組情況。例如,用于從因特網(wǎng)下載內(nèi)容的后臺(tái)組件可以僅能夠在到因特網(wǎng)的連接可用時(shí)執(zhí)行有用工作。因此,應(yīng)用可請(qǐng)求僅在因特網(wǎng)可用時(shí)用信號(hào)通知代理事件。條件的其它例子包括(但不限于)與用戶有關(guān)的條件(例如,用戶為活動(dòng)的或不活動(dòng)的),與系統(tǒng)有關(guān)的條件(例如,網(wǎng)絡(luò)可用/不可用),與應(yīng)用有關(guān)的條件(例如,應(yīng)用最近已經(jīng)在例如由某閾值時(shí)間量確定的過(guò)去被用戶主動(dòng)地使用,應(yīng)用未超過(guò)操 作系統(tǒng)所準(zhǔn)予的特定資源分配等)等等。應(yīng)用可規(guī)定任何數(shù)量的條件,因?yàn)楸竟_(kāi)的各方面不限于對(duì)于代理事件所規(guī)定的任何特定數(shù)量的條件。例如,應(yīng)用可規(guī)定一個(gè)或多個(gè)條件或者可不規(guī)定任何條件。代理可將條件對(duì)待為合取項(xiàng),使得除非滿足了所有規(guī)定的條件,否則不用信號(hào)通知所請(qǐng)求的代理事件,即使激發(fā)了相對(duì)應(yīng)的觸發(fā)??商鎿Q地,代理將這些條件對(duì)待為選項(xiàng),使得如果在激發(fā)相對(duì)應(yīng)的觸發(fā)時(shí)滿足了所規(guī)定的條件中的任一條件,則可用信號(hào)通知所請(qǐng)求的代理事件。在一些另外的實(shí)施例中,代理可允許應(yīng)用規(guī)定條件的任何合適的邏輯組合。可替換地或附加地,操作系統(tǒng)或不同于請(qǐng)求代理事件的應(yīng)用的應(yīng)用(例如,小應(yīng)用程序)也可規(guī)定一個(gè)或多個(gè)將與代理事件相關(guān)聯(lián)的條件。例如,在一些實(shí)施例中,代理可實(shí)現(xiàn)操作系統(tǒng)或應(yīng)用調(diào)用的接口以規(guī)定和/或修改與代理事件相關(guān)聯(lián)的條件,例如通過(guò)提供在動(dòng)作510分配的代理事件ID。如果在動(dòng)作525和動(dòng)作530識(shí)別了一個(gè)或多個(gè)條件,則代理可在動(dòng)作535與在動(dòng)作510分配的代理事件ID相關(guān)聯(lián)地存儲(chǔ)所識(shí)別的條件。例如,代理可在圖6所示和上文所討論的說(shuō)明性數(shù)據(jù)結(jié)構(gòu)600中存儲(chǔ)條件。在動(dòng)作540,代理可將在動(dòng)作510分配的代理事件ID返回到請(qǐng)求代理事件的應(yīng)用,使得應(yīng)用可調(diào)用另一操作系統(tǒng)功能以使代理事件與所需的后臺(tái)組件相關(guān)聯(lián)。如結(jié)合圖9更詳細(xì)地討論的,應(yīng)用在某些實(shí)施例中可注冊(cè)后臺(tái)組件以利用代理基礎(chǔ)結(jié)構(gòu)(或任何其它合適的操作系統(tǒng)組件)來(lái)執(zhí)行,代理基礎(chǔ)結(jié)構(gòu)(或任何其它合適的操作系統(tǒng)組件)可響應(yīng)于代理用信號(hào)通知由代理事件ID標(biāo)識(shí)的代理事件而執(zhí)行后臺(tái)組件。在動(dòng)作545,代理可向代理基礎(chǔ)結(jié)構(gòu)(或用信號(hào)通知的代理事件的任何其它預(yù)期的接收者)規(guī)定與所請(qǐng)求的代理事件相關(guān)聯(lián)的任何附加的約束。例如,在某些實(shí)施例中,代理可為用于管理特定類型資源的專門(mén)組件,且可向代理的基礎(chǔ)結(jié)構(gòu)傳達(dá)將在處置與該特定類型的資源有關(guān)的代理事件時(shí)采用的任何專門(mén)的策略。此信息可以任何合適的方式來(lái)傳達(dá),例如經(jīng)由在代理與代理基礎(chǔ)結(jié)構(gòu)之間使用在動(dòng)作510分配的代理事件ID的直接通信,或者通過(guò)向應(yīng)用提供將與在動(dòng)作510處分配的代理事件ID —起提交給代理基礎(chǔ)結(jié)構(gòu)的信肩、O可由代理規(guī)定的合適約束的例子包括(但不限于)在響應(yīng)于所請(qǐng)求的代理事件而執(zhí)行一個(gè)或多個(gè)后臺(tái)組件之前和/或之后來(lái)要求代理基礎(chǔ)結(jié)構(gòu)通知代理,使與所請(qǐng)求的代理事件相關(guān)聯(lián)的任何后臺(tái)組件免于代理基礎(chǔ)結(jié)構(gòu)的節(jié)流規(guī)則,在用信號(hào)通知所請(qǐng)求的代理事件之后一個(gè)或多個(gè)后臺(tái)組件要執(zhí)行和/或完成的最后期限;在相同的進(jìn)程中運(yùn)行與來(lái)自此代理的代理事件相關(guān)聯(lián)的所有后臺(tái)組件且僅作為最后手段終止該進(jìn)程;序列化與來(lái)自此代理的代理事件相關(guān)聯(lián)的后臺(tái)組件;跨系統(tǒng)重啟地持續(xù)用信號(hào)通知的代理事件和/或在系統(tǒng)重啟之后通知代理持續(xù)的用信號(hào)通知的代理事件等。雖然在上文中結(jié)合圖5討論了觸發(fā)、條件和約束的具體例子,應(yīng)意識(shí)到本公開(kāi)的方面并不限于由應(yīng)用和/或操作系統(tǒng)規(guī)定的觸發(fā)、條件和/或約束的任何特定組合。在某些實(shí)施例中,觸發(fā)、條件和/或約束可表示為將由操作系統(tǒng)組件(例如,代理)解釋以確定何時(shí)執(zhí)行后臺(tái)工作項(xiàng)目的一般程序。而且,雖然描述了其中代理基礎(chǔ)結(jié)構(gòu)和個(gè)體代理形成兩層結(jié)構(gòu)的說(shuō)明性實(shí)施例,其它實(shí)施例可包括代理的多層的層級(jí),其中在一層處的代理可組合來(lái)自在較低層級(jí)的一個(gè)或多個(gè)其它代理。圖7示出了根據(jù)某些實(shí)施例可由代理組件執(zhí)行以確定何時(shí)用信號(hào)通知代理事件的說(shuō)明性過(guò)程700。例如,過(guò)程700可由圖4所示的代理415A-D之一來(lái)執(zhí)行。在動(dòng)作705,代理可檢測(cè)到觸發(fā)激發(fā)。如上文所討論的那樣,這可包括從操作系統(tǒng)接收指示剛發(fā)生的某事的事件,諸如用戶登錄或退出,網(wǎng)絡(luò)變得可用或不可用,定時(shí)器到期
坐寸ο響應(yīng)于檢測(cè)到觸發(fā)器激發(fā),代理可在動(dòng)作707識(shí)別要用信號(hào)通知的一個(gè)或多個(gè)相關(guān)聯(lián)的代理事件。這可例如通過(guò)存取諸如圖6所示那樣的數(shù)據(jù)結(jié)構(gòu)來(lái)進(jìn)行。例如,代理可識(shí)別在數(shù)據(jù)結(jié)構(gòu)600中具有存儲(chǔ)于“觸發(fā)”字段610中的激發(fā)的觸發(fā)的一個(gè)或多個(gè)條目。如果識(shí)別了多個(gè)這樣的條目,代理可逐一處理?xiàng)l目。對(duì)于匹配激發(fā)的觸發(fā)的每個(gè)條目,代理可在動(dòng)作710確定是否對(duì)于相對(duì)應(yīng)的代理事件規(guī)定了任何條件,且若如此,確定是否滿足了所有這樣的條件。在一些實(shí)施例中,這可通過(guò)檢查如圖6所示的相對(duì)應(yīng)“條件(一個(gè)或多個(gè))”字段615且評(píng)估所有存儲(chǔ)的條件來(lái)進(jìn)行。在可替換實(shí)施例中,代理可對(duì)于每個(gè)存儲(chǔ)的條件保持指示當(dāng)前是否滿足了所存儲(chǔ)的條件的布爾變量和用于評(píng)估條件的任何輔助變量。代理可例如響應(yīng)于在輔助變量中的變化來(lái)連續(xù)地更新布爾變量。以此方式,代理可簡(jiǎn)單地在動(dòng)作710檢查布爾變量,而無(wú)須再次評(píng)估條件。如果滿足了所有相關(guān)聯(lián)的條件,或者如果無(wú)條件存儲(chǔ)于字段615中,則代理可繼續(xù)到動(dòng)作715。否則,代理可在動(dòng)作720鎖存觸發(fā)器并繼續(xù)監(jiān)視相關(guān)聯(lián)的條件。在其中代理為每個(gè)存儲(chǔ)的條件保持布爾變量的實(shí)施例中,監(jiān)視條件可簡(jiǎn)單地包括繼續(xù)更新布爾變量。如果且當(dāng)在動(dòng)作725對(duì)于相關(guān)聯(lián)的條件中的一個(gè)或多個(gè)檢測(cè)到變化時(shí),代理可返回到動(dòng)作710以檢查是否滿足了所有相關(guān)聯(lián)的條件。代理可無(wú)限期地循環(huán)動(dòng)作710、720和725,除非到了與鎖存的觸發(fā)相關(guān)聯(lián)的預(yù)定期限,在此情況下,當(dāng)預(yù)定期限到期時(shí),代理可丟棄所鎖存的觸發(fā)。如果在某點(diǎn)全部相關(guān)聯(lián)的條件變得滿足,代理可在動(dòng)作715檢查任何代理限制是否適用于代理事件且若如此,檢查是否滿足了適用的代理限制。如上文所討論的那樣,代理可實(shí)施一個(gè)或多個(gè)資源管理策略且可避免用信號(hào)通知代理事件,即使在激發(fā)了觸發(fā)且滿足了所有應(yīng)用規(guī)定的條件時(shí),作為控制應(yīng)用的資源消耗的方式。代理限制可為用于實(shí)施這些資源管理策略的機(jī)制。在一個(gè)例子中,可對(duì)于單個(gè)應(yīng)用使用代理所管理的資源的的頻率施加限制(例如,在每天或某些其它合適的時(shí)段的次數(shù)或者在該時(shí)段內(nèi)已經(jīng)由自該應(yīng)用或整個(gè)系統(tǒng)的后臺(tái)活動(dòng)消耗了多少管理的資源)。也可規(guī)定其它類型的代理限制,因?yàn)楸竟_(kāi)的各方面并不限制任何特定類型的代理限制。如果滿足了所有適用的代理限制,則代理可在動(dòng)作720用信號(hào)通知代理事件,否則代理可簡(jiǎn)單地丟棄所激發(fā)的觸發(fā)。在某些實(shí)施例中,代理可請(qǐng)求操作系統(tǒng)標(biāo)記因?yàn)椴⑽礉M足某些條件和/或限制而未用信號(hào)通知代理事件。操作系統(tǒng)又可通知該應(yīng)用所請(qǐng)求的代理事件(例如經(jīng)由API函數(shù),諸如在圖I所示的前臺(tái)組件105的“BG狀態(tài)”接口),盡管這樣的通知并非必需的。盡管結(jié)合圖5至圖7在上文描述了代理和代理功能的具體例子,應(yīng)意識(shí)到本公開(kāi)的方面不限于使用具有代理基礎(chǔ)結(jié)構(gòu)和多個(gè)代理的框架,也不限于在代理基礎(chǔ)結(jié)構(gòu)與個(gè)體代理之間的責(zé)任的任何具體劃分。例如,在可替換實(shí)施例中,本文所述的代理功能的任何合適子集可由代理基礎(chǔ)結(jié)構(gòu)來(lái)實(shí)施。在一個(gè)例子中,代理基礎(chǔ)結(jié)構(gòu)可保持在代理事件與請(qǐng)求代理事件的應(yīng)用之間的關(guān)聯(lián)性,使得應(yīng)用和/或代理能從代理基礎(chǔ)結(jié)構(gòu)得到該信息。這可
作為持續(xù)這樣的信息的方式來(lái)完成。在另一例子中,代理基礎(chǔ)結(jié)構(gòu)可被編程以鎖存觸發(fā)和/或監(jiān)視相關(guān)聯(lián)的條件來(lái)確定何時(shí)用信號(hào)通知代理事件。以此方式,應(yīng)用能請(qǐng)求不同代理為之實(shí)施一些觸發(fā)和/或條件的代理事件,因?yàn)榇砘A(chǔ)結(jié)構(gòu)能管理來(lái)自多個(gè)個(gè)體代理的狀態(tài)息。而且,在一實(shí)施方式中可便于模塊化開(kāi)發(fā),其中,代理基礎(chǔ)結(jié)構(gòu)處置條件監(jiān)視,因?yàn)閭€(gè)別代理不再需要“理解”或應(yīng)對(duì)條件。圖8A示出了根據(jù)某些實(shí)施例可由代理基礎(chǔ)結(jié)構(gòu)(BI)或某些其它合適的操作系統(tǒng)組件執(zhí)行以使得后臺(tái)組件與代理事件相關(guān)聯(lián)的說(shuō)明性過(guò)程800。圖SB示出了能結(jié)合過(guò)程800使用的說(shuō)明性數(shù)據(jù)結(jié)構(gòu)850。由過(guò)程800創(chuàng)建的關(guān)聯(lián)性可允許操作系統(tǒng)響應(yīng)于用信號(hào)通知代理事件來(lái)加載和執(zhí)行后臺(tái)組件。在一例子中,過(guò)程800可由圖4所示的代理基礎(chǔ)結(jié)構(gòu)405來(lái)執(zhí)行。但是,本公開(kāi)的各方面不限于使任何特定的操作系統(tǒng)組件執(zhí)行關(guān)聯(lián)過(guò)程。在一些可替換實(shí)施例中,負(fù)責(zé)用信號(hào)通知代理事件的代理可使后臺(tái)組件與代理事件相關(guān)聯(lián),例如,作為過(guò)程的部分來(lái)響應(yīng)于自應(yīng)用的請(qǐng)求而建立代理事件。在動(dòng)作805,BI可接收使諸如工作項(xiàng)目的后臺(tái)組件與代理事件相關(guān)聯(lián)的請(qǐng)求。請(qǐng)求可接收自任何合適的實(shí)體,因?yàn)楸竟_(kāi)的各方面不受此限制。例如,在某些實(shí)施例中,應(yīng)用可提交使所執(zhí)行的組件為該應(yīng)用做后臺(tái)工作的請(qǐng)求。在一些其它實(shí)施例中,負(fù)責(zé)用信號(hào)通知代理事件的代理可代表應(yīng)用而提交這樣的請(qǐng)求,例如在應(yīng)用從代理請(qǐng)求代理事件時(shí),或者在應(yīng)用被安裝或更新時(shí)。在動(dòng)作810,BI可例如在圖8B所示的說(shuō)明性數(shù)據(jù)結(jié)構(gòu)850中存儲(chǔ)與代理事件ID相關(guān)聯(lián)的代理事件ID。在此實(shí)施例中,數(shù)據(jù)結(jié)構(gòu)850可包括多個(gè)實(shí)體,每個(gè)實(shí)體對(duì)應(yīng)于代理事件且具有至少兩個(gè)字段,字段855用于存儲(chǔ)代理事件ID且字段860用于存儲(chǔ)后臺(tái)組件ID。例如,在第一說(shuō)明性條目中,代理事件ID “BE/’與后臺(tái)組件ID “ObjectActivationClass/’相關(guān)聯(lián),其可識(shí)別實(shí)施后臺(tái)組件的軟件對(duì)象。盡管未示出,在數(shù)據(jù)結(jié)構(gòu)850中的條目可具有附加字段,例如用于存儲(chǔ)指示后臺(tái)組件可從那里加載的存儲(chǔ)位置的信息,和/或當(dāng)管理后臺(tái)組件時(shí)可允許BI實(shí)施一個(gè)或多個(gè)資源管理策略的信息。在一個(gè)例子中,BI可存儲(chǔ)請(qǐng)求執(zhí)行后臺(tái)組件的應(yīng)用的標(biāo)識(shí),從而B(niǎo)I可在管理后臺(tái)組件時(shí)實(shí)施適用于該應(yīng)用的策略。在另一例子中,BI可存儲(chǔ)由負(fù)責(zé)用信號(hào)通知代理事件的代理所規(guī)定的約束,例如,如在上文中結(jié)合圖5的動(dòng)作545所討論的那樣。圖9示出了根據(jù)某些實(shí)施例可由代理基礎(chǔ)結(jié)構(gòu)(BI)組件或某些其它合適的操作系統(tǒng)組件執(zhí)行以確定何時(shí)執(zhí)行后臺(tái)組件和如何來(lái)管理后臺(tái)組件的執(zhí)行的過(guò)程900。例如,可由圖4所示的BI組件405來(lái)執(zhí)行過(guò)程900。在動(dòng)作905,BI可檢測(cè)代理用信號(hào)通知的代理事件。響應(yīng)于檢測(cè)到用信號(hào)通知的代理事件,BI可在動(dòng)作910識(shí)別要執(zhí)行的一個(gè)或多個(gè)相關(guān)聯(lián)的后臺(tái)組件。這可例如通過(guò)存取諸如圖SB所示那樣的數(shù)據(jù)結(jié)構(gòu)來(lái)完成。例如,BI可識(shí)別在數(shù)據(jù)結(jié)構(gòu)850中具有在“代理事件ID”字段855中存儲(chǔ)的用信號(hào)通知的代理事件的一個(gè)或多個(gè)條目。如果識(shí)別了多個(gè)這樣的條目,則BI可逐一處理?xiàng)l目。

對(duì)于匹配用信號(hào)通知的代理事件的每個(gè)條目,BI可在動(dòng)作915檢查任何約束和/或限制是否適用且滿足。如在上文中結(jié)合圖5的動(dòng)作545所討論的那樣,約束可為由代理傳達(dá)給BI的專門(mén)資源管理規(guī)則,其用于輔助BI管理與用信號(hào)通知的代理事件相關(guān)聯(lián)的資源。另一方面,限制可捕獲由BI實(shí)施的任何資源管理策略。這些策略可但并非必需與由個(gè)別代理實(shí)施的那些策略重疊。在某些實(shí)施方式中,BI可為一般操作系統(tǒng)組件(而不是可特殊地適于管理具體類型的資源的代理)且能施加與資源管理的多個(gè)方面有關(guān)的封頂限制。在一個(gè)例子中,BI可對(duì)于可分配給后臺(tái)工作執(zhí)行多少處理器時(shí)間(例如,在處理器時(shí)間的百分比方面)或者對(duì)于每天或某些其它合適時(shí)段的規(guī)定處理器時(shí)間量施加限制。這個(gè)限制可總是施加或者僅可在特定情況下施加,諸如在系統(tǒng)以電池來(lái)運(yùn)行時(shí)。在另一例子中,BI可基于該應(yīng)用與用戶的“會(huì)面時(shí)間”的多少,即用戶相對(duì)于其它應(yīng)用使用該應(yīng)用的頻率(例如,在用戶與該應(yīng)用交互所花費(fèi)的實(shí)際時(shí)間的百分比或應(yīng)用的前述組件所用的處理器時(shí)間的百分比方面)來(lái)向應(yīng)用分配后臺(tái)執(zhí)行預(yù)算的百分比。在又一例子中,如果用戶并未長(zhǎng)時(shí)間運(yùn)行任何相關(guān)聯(lián)的后臺(tái)組件(例如,在選擇的閾值時(shí)段,諸如一個(gè)月、兩個(gè)月,三個(gè)月等),BI可防止后臺(tái)組件運(yùn)行。如果滿足了所有適用約束和BI限制,則BI可進(jìn)行到動(dòng)作920來(lái)加載和執(zhí)行后臺(tái)組件。否則,BI可繼續(xù)到動(dòng)作935以向相對(duì)應(yīng)的前臺(tái)組件報(bào)告失敗。在一些實(shí)施例中,該報(bào)告可識(shí)別一個(gè)或多個(gè)失敗的原因,因此前臺(tái)組件可采取適當(dāng)措施,例如提示用戶準(zhǔn)許免除所違反的約束或BI限制。如果BI在動(dòng)作915確定滿足了所有適用的靜態(tài)約束和BI限制且在動(dòng)作920起動(dòng)后臺(tái)組件,那么BI可在動(dòng)作925監(jiān)視在后臺(tái)組件執(zhí)行時(shí)是否滿足了所有適用的動(dòng)態(tài)約束和BI限制。動(dòng)態(tài)BI限制的例子包括(但不限于)相對(duì)于其它后臺(tái)組件一后臺(tái)組件可使用多少處理器時(shí)間(例如,在分配給后臺(tái)執(zhí)行的處理器時(shí)間預(yù)算的百分比方面)和后臺(tái)組件向完成進(jìn)展的最小速度。如果在執(zhí)行期間違反了任何動(dòng)態(tài)約束或BI限制,則后臺(tái)組件可在動(dòng)作930停止,且BI可繼續(xù)到動(dòng)作935以報(bào)告未能完成執(zhí)行后臺(tái)組件。同樣,在一些實(shí)施例中,報(bào)告可識(shí)別失敗的原因,因此前臺(tái)組件可采取適當(dāng)措施。如果在執(zhí)行期間違反了動(dòng)態(tài)約束或BI限制,則后臺(tái)組件可完成且BI可繼續(xù)到動(dòng)作935來(lái)報(bào)告成功地完成了后臺(tái)組件。但應(yīng)意識(shí)到,本文所述用于管理后臺(tái)組件的各種技術(shù)可用于管理無(wú)前臺(tái)組件的應(yīng)用,例如在任何類型的計(jì)算設(shè)備上運(yùn)行的后臺(tái)服務(wù)。
應(yīng)意識(shí)到,結(jié)合圖4至圖9在上文描述的各種代理執(zhí)行模型可在某些實(shí)施例中由操作系統(tǒng)用于管理后臺(tái)工作的執(zhí)行,而不是前臺(tái)工作的執(zhí)行,從而造成對(duì)前臺(tái)工作和后臺(tái)工作的差別化管理。但在可替換實(shí)施例中,代理執(zhí)行也可用于管理前臺(tái)工作,例如以控制資源消耗。例如,可由響應(yīng)于用戶輸入而用信號(hào)通知的代理事件造成前臺(tái)工作的執(zhí)行。但在這樣的實(shí)施例中,用戶可感知到更加遲緩,這歸因于在代理執(zhí)行模型中采用的資源管理機(jī)制的一層或多層。因此,在決定是否使用前臺(tái)工作的代理執(zhí)行時(shí),可在保存資源與維持活動(dòng)的前臺(tái)組件的響應(yīng)性之間做出權(quán)衡。圖10示意性地示出了其上可實(shí)施本公開(kāi)的各種方面的說(shuō)明性計(jì)算機(jī)1000。例如,計(jì)算機(jī)1000可為其上可實(shí)施本文所述的特征中的任何特征的移動(dòng)設(shè)備。如本文所用的“移動(dòng)設(shè)備”可為足夠小使得其能由用戶攜帶(例如由用戶拿在手中)的任何計(jì)算設(shè)備。移動(dòng)設(shè)備的例子包括(但不限于)移動(dòng)電話、尋呼機(jī)、便攜式媒體播放器、電子書(shū)閱讀器、手持游戲機(jī)、個(gè)人數(shù)字助理(PDA)和平板計(jì)算機(jī)。在某些情形中,移動(dòng)
設(shè)備的重量可至多為I磅,I. 5磅或2磅和/或移動(dòng)設(shè)備的最大尺寸可至多為6英寸,9英寸或一英尺。此外,移動(dòng)設(shè)備可包括允許用戶在不同位置使用該設(shè)備的特點(diǎn)。例如,移動(dòng)設(shè)備可包括功率存貯器(例如,電池)使得其可在不插入到電插座的某段持續(xù)時(shí)間使用。作為另一例子,移動(dòng)設(shè)備可包括無(wú)線網(wǎng)絡(luò)接口,無(wú)線網(wǎng)絡(luò)接口被配置成提供網(wǎng)絡(luò)連接而無(wú)需物理地連接到網(wǎng)絡(luò)連接點(diǎn)。在圖10所示的例子中,計(jì)算機(jī)1000包括處理器或處理單元1001和存儲(chǔ)器1002,存儲(chǔ)器1002可包括易失性和/或非易失性存儲(chǔ)器。計(jì)算機(jī)1000還可包括存儲(chǔ)裝置1005 (例如,一個(gè)或多個(gè)盤(pán)驅(qū)動(dòng)器),作為系統(tǒng)存儲(chǔ)器1002的補(bǔ)充。存儲(chǔ)器1002可存儲(chǔ)一個(gè)或多個(gè)指令來(lái)將處理單元1001編程以執(zhí)行本文所述功能中的任何功能。存儲(chǔ)器1002也可存儲(chǔ)再多一個(gè)應(yīng)用程序和/或應(yīng)用編程接口(API)函數(shù)。計(jì)算機(jī)1000可具有一個(gè)或多個(gè)輸入設(shè)備和/或輸出設(shè)備,諸如圖10所圖不的設(shè)備1006和1007。這些設(shè)備尤其可用于呈現(xiàn)用戶界面??捎糜谔峁┯脩艚缑娴妮敵鲈O(shè)備的例子包括打印機(jī)或用于輸出的視覺(jué)呈現(xiàn)的顯示屏和用于輸出的可聽(tīng)呈現(xiàn)的揚(yáng)聲器或其它聲音發(fā)生設(shè)備??捎糜谟脩艚缑娴妮斎朐O(shè)備的例子包括鍵盤(pán)和諸如鼠標(biāo)的指向設(shè)備、觸摸墊和數(shù)字化輸入板。作為另一例子,計(jì)算機(jī)可通過(guò)語(yǔ)音識(shí)別或其它可聽(tīng)格式來(lái)接收輸入信肩、O如圖10所示,計(jì)算機(jī)1000也可包括實(shí)現(xiàn)經(jīng)由各種網(wǎng)絡(luò)(例如,網(wǎng)絡(luò)1020)通信的一個(gè)或多個(gè)網(wǎng)絡(luò)接口(例如,網(wǎng)絡(luò)接口 1010)。網(wǎng)絡(luò)的例子包括局域網(wǎng)或廣域網(wǎng),諸如企業(yè)網(wǎng)絡(luò)或因特網(wǎng)。這樣的網(wǎng)絡(luò)可基于任何合適的技術(shù)且可根據(jù)任何合適協(xié)議操作且可包括無(wú)線網(wǎng)絡(luò)、有線網(wǎng)絡(luò)或光纖網(wǎng)絡(luò)。上文中描述了本發(fā)明的至少一個(gè)實(shí)施例的若干方面,應(yīng)了解本領(lǐng)域技術(shù)人員將易于想到各種更改、修改和改進(jìn)。這樣的更改、修改和改進(jìn)預(yù)期為本公開(kāi)的部分,且預(yù)期在本發(fā)明的精神和范圍內(nèi)。另外,盡管示出了本發(fā)明的優(yōu)點(diǎn),應(yīng)意識(shí)到并非本發(fā)明的每一個(gè)實(shí)施例將包括每個(gè)描述的優(yōu)點(diǎn)。某些實(shí)施例可不實(shí)施在本文中且在某些情形下被描述為有利的任何特征。因此,前文的描述和附圖只是舉例說(shuō)明。本發(fā)明的上文所述的實(shí)施例可以多種方式中的任何方式來(lái)實(shí)施。例如,這些實(shí)施例可使用硬件、軟件或其組合來(lái)實(shí)施。當(dāng)實(shí)施于軟件中時(shí),軟件代碼可在任何合適的處理器或處理器集上執(zhí)行,無(wú)論設(shè)于單個(gè)計(jì)算機(jī)中還是分布于多個(gè)計(jì)算機(jī)之間。這樣的處理器可實(shí)施為集成電路,其中一個(gè)或多個(gè)處理器在集成電路組件中。但可使用任何合適格式的電路來(lái)實(shí)現(xiàn)處理器。另外,應(yīng)了解計(jì)算機(jī)可實(shí)施為多種形式中的任何形式,諸如機(jī)架安裝的計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)或平板計(jì)算機(jī)。此外,計(jì)算機(jī)可嵌入于通常不認(rèn)為是計(jì)算機(jī)但具有合適處理能力的設(shè)備內(nèi),包括個(gè)人數(shù)字助理(PDA)、智能手機(jī)、收銀機(jī)、自動(dòng)柜員機(jī)(ATM)或任何其它合適的便攜式或固定電子設(shè)備。而且,本文所列出的各種方法或過(guò)程可編碼為軟件,軟件可執(zhí)行于采用多種操作系統(tǒng)或平臺(tái)中任一個(gè)的一個(gè)或多個(gè)處理器上。此外,這樣的軟件可使用多種合適編程語(yǔ)言和/或編程或腳本處理工具中的任一個(gè)來(lái)寫(xiě),且還可編譯為在框架或虛擬機(jī) 上執(zhí)行的可執(zhí)行機(jī)器語(yǔ)言代碼或中間代碼。在此方面,本發(fā)明可實(shí)施為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(或多個(gè)計(jì)算機(jī)可讀介質(zhì))(例如,計(jì)算機(jī)存儲(chǔ)器,一個(gè)或多個(gè)軟盤(pán)、致密盤(pán)(CD)、光盤(pán)、數(shù)字視頻盤(pán)(DVD)、磁帶、閃存、現(xiàn)場(chǎng)可編程門(mén)陣列中的電路配置或其它半導(dǎo)體器件,或其它有形計(jì)算機(jī)存儲(chǔ)介質(zhì)),其利用一個(gè)或多個(gè)程序編碼,當(dāng)這些程序在一個(gè)或多個(gè)計(jì)算機(jī)或其它處理器上執(zhí)行時(shí)執(zhí)行實(shí)施上文所討論的本發(fā)明的各種實(shí)施例的方法。如從前述例子顯然,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可保持信息持續(xù)足以以非暫態(tài)形式提供計(jì)算機(jī)可執(zhí)行指令的時(shí)間。這樣的一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)是可運(yùn)輸?shù)?,使得存?chǔ)于其上的一個(gè)或多個(gè)程序可加載到一個(gè)或多個(gè)不同的計(jì)算機(jī)或其它處理器上以實(shí)施如上文所討論的本發(fā)明的各個(gè)方面。如本文所用的術(shù)語(yǔ)"計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)”僅涵蓋可認(rèn)為是制件(即,制品)或機(jī)器的計(jì)算機(jī)可讀介質(zhì)。作為替代或作為補(bǔ)充,本發(fā)明可實(shí)施為除了諸如傳播信號(hào)的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)之外的計(jì)算機(jī)可讀介質(zhì)。如本文所用的術(shù)語(yǔ)“程序”或“軟件”在一般意義上指可用于對(duì)計(jì)算機(jī)或其它處理器編程以實(shí)施如上文所討論的本發(fā)明的各個(gè)方面的任何類型的計(jì)算機(jī)代碼或計(jì)算機(jī)可執(zhí)行指令的集合。此外,應(yīng)了解根據(jù)此實(shí)施例的一個(gè)方面,在執(zhí)行時(shí)實(shí)施本發(fā)明的方法的一個(gè)或多個(gè)計(jì)算機(jī)程序不需要駐留在單個(gè)計(jì)算機(jī)或處理器上,而是可以以模塊化方式分布于多個(gè)不同的計(jì)算機(jī)或處理器之間以實(shí)施本發(fā)明的各個(gè)方面。計(jì)算機(jī)可執(zhí)行的指令可呈由一個(gè)或多個(gè)計(jì)算機(jī)或其它設(shè)備執(zhí)行的許多形式,諸如程序模塊。一般而言,程序模塊包括例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等,其執(zhí)行特定任務(wù)或?qū)嵤┨囟ǔ橄髷?shù)據(jù)類型。通常,程序模塊的功能可被組合或者在各種實(shí)施例中根據(jù)需要來(lái)分配。而且,數(shù)據(jù)結(jié)構(gòu)可存儲(chǔ)在任何合適形式的計(jì)算機(jī)可讀介質(zhì)中。為了簡(jiǎn)化說(shuō)明,數(shù)據(jù)結(jié)構(gòu)可被示出為具有通過(guò)該數(shù)據(jù)結(jié)構(gòu)中的位置而相關(guān)的字段。這樣的關(guān)系同樣可以通過(guò)對(duì)具有傳達(dá)各字段之間關(guān)系的、計(jì)算機(jī)可讀介質(zhì)中的的位置的各字段分配存儲(chǔ)而得到。然而,可以使用任何合適的機(jī)制來(lái)在數(shù)據(jù)結(jié)構(gòu)的各字段中的信息之間建立關(guān)系,包括通過(guò)使用指針、標(biāo)簽或在數(shù)據(jù)元素之間建立關(guān)系的其它機(jī)制。本發(fā)明的各個(gè)方面可單獨(dú)地,組合地或以前文描述的實(shí)施例中未具體討論的多種安排來(lái)使用,且因此其應(yīng)用并不限于在前文的描述中陳述或附圖所圖示的組件的細(xì)節(jié)和安排。例如,在一個(gè)實(shí)施例中描述的方面可以任何方式與其它實(shí)施例中所描述的各方面組合。
同樣,本發(fā)明可被具體化為已經(jīng)提供了其例子的方法。作為方法的部分而執(zhí)行的動(dòng)作可以任何合適方式排序。因此,可以構(gòu)建實(shí)施例,其中各動(dòng)作以與所例示的次序不同的次序執(zhí)行,其可包括同時(shí)地執(zhí)行的某些動(dòng)作,即使這些動(dòng)作在各說(shuō)明性實(shí)施例中被示為順序動(dòng)作。在權(quán)利要求中使用諸如“第一”、“第二”、“第三”等序數(shù)詞來(lái)修飾權(quán)利要求要素本身并不意味著一個(gè)權(quán)利要求要素較之另一個(gè)權(quán)利要求要素的優(yōu)先級(jí)、先后次序或順序,或者方法的各動(dòng)作被執(zhí)行的時(shí)間順序,而僅用作將具有某一名字的一個(gè)權(quán)利要求要素與(若不使用序數(shù)詞)具有同一名字的另一要素區(qū)分開(kāi)的標(biāo)簽以區(qū)分各權(quán)利要求要素。而且,本文所用的短語(yǔ)和術(shù)語(yǔ)是出于描述目的且不應(yīng)認(rèn)為具有限制意義。在本文中使用“包括”、“包含”或“具有”、“含有”、“涉及”及其變型旨在 包括其后列出的項(xiàng)目和其等效物以及附加項(xiàng)目。
權(quán)利要求
1.一種由在至少一個(gè)計(jì)算機(jī)上執(zhí)行的操作系統(tǒng)(400)使用的方法,所述方法包括動(dòng)作 識(shí)別應(yīng)用(100)的至少一個(gè)后臺(tái)組件(110A-C); 確定是否滿足了至少一個(gè)條件(615);以及 僅在確定出滿足了所述至少一個(gè)條件¢15)時(shí)執(zhí)行所述至少一個(gè)后臺(tái)組件(110A-C)O
2.根據(jù)權(quán)利要求I所述的方法,其還包括動(dòng)作 識(shí)別所述應(yīng)用(100)的至少一個(gè)前臺(tái)組件(105);以及 與所述至少一個(gè)前臺(tái)組件(105)的執(zhí)行不同地管理所述后臺(tái)組件(110A-C)的執(zhí)行,包括執(zhí)行所述至少一個(gè)前臺(tái)組件(105),而不考慮所述至少一個(gè)條件¢15)。
3.根據(jù)權(quán)利要求2所述的方法,其中與所述至少一個(gè)前臺(tái)組件(105)的執(zhí)行不同地管理所述后臺(tái)組件(110A-C)的執(zhí)行的動(dòng)作還包括 確定用戶是否與所述應(yīng)用(100)主動(dòng)地交互; 僅在確定出所述用戶正與所述應(yīng)用(100)主動(dòng)地交互時(shí)執(zhí)行所述至少一個(gè)前臺(tái)組件(105);以及 執(zhí)行所述至少一個(gè)后臺(tái)組件(110A-C)而不考慮所述用戶是否與所述應(yīng)用(100)主動(dòng)地交互。
4.根據(jù)權(quán)利要求I所述的方法,其還包括動(dòng)作 僅響應(yīng)于操作系統(tǒng)代理組件(415A-D)用信號(hào)通知的代理事件來(lái)執(zhí)行所述至少一個(gè)后臺(tái)組件(110A-C)。
5.根據(jù)權(quán)利要求4所述的方法,其中,所述至少一個(gè)條件(615)與所述代理事件相關(guān)聯(lián),且其中所述方法還包括動(dòng)作 在所述操作系統(tǒng)代理組件(415A-D)處檢測(cè)與所述代理事件相關(guān)聯(lián)的至少一個(gè)觸發(fā)(610)的發(fā)生; 響應(yīng)于檢測(cè)到所述至少一個(gè)觸發(fā)(610)的發(fā)生,在所述操作系統(tǒng)代理組件(415A-D)處確定是否滿足了所述至少一個(gè)條件(615);以及 僅當(dāng)確定出滿足了所述至少一個(gè)條件(615)時(shí)由所述操作系統(tǒng)代理組件(415A-D)用信號(hào)通知所述代理事件。
6.一種計(jì)算機(jī)實(shí)施的方法,其包括以下動(dòng)作 在操作系統(tǒng)(400)處接收響應(yīng)于至少一個(gè)事件來(lái)執(zhí)行應(yīng)用(100)的至少一個(gè)后臺(tái)組件(110A-C)的請(qǐng)求; 響應(yīng)于檢測(cè)到所述至少一個(gè)事件的發(fā)生來(lái)由所述操作系統(tǒng)(400)確定是否滿足了由所述應(yīng)用(100)設(shè)置的至少一個(gè)第一條件(615)且是否滿足由所述操作系統(tǒng)(400)設(shè)置的至少一個(gè)第二條件¢15);以及 當(dāng)發(fā)生了所述至少一個(gè)事件之后確定出滿足了至少一個(gè)第一條件和第二條件(615)時(shí)執(zhí)行所述至少一個(gè)后臺(tái)組件(110A-C)。
7.根據(jù)權(quán)利要求6所述的方法,其中,接收響應(yīng)于至少一個(gè)事件來(lái)執(zhí)行所述至少一個(gè)后臺(tái)組件(110A-C)的請(qǐng)求的動(dòng)作包括 在代理基礎(chǔ)結(jié)構(gòu)組件(405)處接收響應(yīng)于由操作系統(tǒng)代理組件(415A-D)用信號(hào)通知的代理事件而執(zhí)行至少一個(gè)后臺(tái)組件(IlOA-C)的請(qǐng)求。
8.根據(jù)權(quán)利要求6所述的方法,其中,所述至少一個(gè)事件包括由操作系統(tǒng)代理組件(415A-D)用信號(hào)通知的代理事件,且其中所述方法還包括以下動(dòng)作 在所述操作系統(tǒng)代理組件(415A-D)處接收響應(yīng)于至少一個(gè)觸發(fā)(610)用信號(hào)通知代理事件的請(qǐng)求。
9.根據(jù)權(quán)利要求8所述的方法,其中,所述至少一個(gè)條件(615)為至少一個(gè)第一條件(615),且其中響應(yīng)于至少一個(gè)觸發(fā)(610)用信號(hào)通知代理事件的請(qǐng)求規(guī)定了在用信號(hào)通知所述代理事件之前要滿足的至少一個(gè)第二條件(615)。
10.根據(jù)權(quán)利要求9所述的方法,其還包括以下動(dòng)作 由所述操作系統(tǒng)代理組件(415A-D)來(lái)保持用于評(píng)估所述至少一個(gè)第二條件(615)的狀態(tài)信息; 由所述操作系統(tǒng)代理組件(415A-D)響應(yīng)于確定出在激發(fā)(fire)所述至少一個(gè)觸發(fā)(610)時(shí)未滿足所述至少一個(gè)第二條件(615)來(lái)鎖存所述至少一個(gè)觸發(fā)(610); 由所述操作系統(tǒng)代理組件(415A-D)響應(yīng)于所保持的狀態(tài)信息的變化來(lái)重新評(píng)估所述至少一個(gè)第二條件(615)以確定是否用信號(hào)通知所述代理事件。
11.一種計(jì)算機(jī)可讀介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)可讀指令,其中計(jì)算機(jī)可讀指令當(dāng)被執(zhí)行時(shí)完成權(quán)利要求ι- ο中任一項(xiàng)所述的方法。
全文摘要
用于單獨(dú)地管理后臺(tái)工作和前臺(tái)工作的系統(tǒng)、方法和設(shè)備。在某些實(shí)施例中,操作系統(tǒng)可識(shí)別相同應(yīng)用或不同應(yīng)用的至少一個(gè)前臺(tái)組件和至少一個(gè)后臺(tái)組件,且可不同地管理這些組件的執(zhí)行。例如,操作系統(tǒng)可接收響應(yīng)于至少一個(gè)事件來(lái)執(zhí)行應(yīng)用的至少一個(gè)后臺(tái)組件的請(qǐng)求。響應(yīng)于檢測(cè)到至少一個(gè)事件的發(fā)生,該操作系統(tǒng)可確定是否滿足了由該應(yīng)用所設(shè)置的至少一個(gè)第一條件且是否滿足了由操作系統(tǒng)設(shè)置的至少一個(gè)第二條件,且可在發(fā)生了至少一個(gè)事件之后確定滿足了至少一個(gè)第一條件和第二條件來(lái)執(zhí)行至少一個(gè)后臺(tái)組件。
文檔編號(hào)G06F9/46GK102880505SQ20121031745
公開(kāi)日2013年1月16日 申請(qǐng)日期2012年8月31日 優(yōu)先權(quán)日2011年9月1日
發(fā)明者J.A.小施瓦茨, A.U.基尚, R.K.涅夫斯, D.B.普羅伯特, H.普拉帕卡, A.F.格夫勞特 申請(qǐng)人:微軟公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
新田县| 和平区| 普格县| 工布江达县| 广水市| 南丹县| 伊通| 宜良县| 当阳市| 门头沟区| 吉林省| 镇雄县| 湾仔区| 凤山市| 株洲市| 怀宁县| 神池县| 伊通| 新化县| 松溪县| 维西| 蓬莱市| 弥勒县| 从江县| 汾西县| 鹿邑县| 高台县| 邢台县| 张掖市| 雅安市| 金塔县| 湟源县| 土默特右旗| 崇文区| 新晃| 海宁市| 凤翔县| 蚌埠市| 原阳县| 防城港市| 望谟县|