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

基于對等事件數(shù)據(jù)來對移動設(shè)備進行動態(tài)調(diào)整的制作方法

文檔序號:12287800閱讀:501來源:國知局
基于對等事件數(shù)據(jù)來對移動設(shè)備進行動態(tài)調(diào)整的制作方法與工藝

本公開總體涉及基于系統(tǒng)事件管理系統(tǒng)資源。



背景技術(shù):

移動計算設(shè)備典型地靠電池工作。一些移動計算設(shè)備可通過蜂窩數(shù)據(jù)和/或Wi-Fi網(wǎng)絡(luò)連接無線訪問網(wǎng)絡(luò)資源。這些移動設(shè)備通常受到電池容量和/或蜂窩數(shù)據(jù)用量限制的約束。

一些移動計算設(shè)備允許用戶運行從網(wǎng)絡(luò)資源訪問數(shù)據(jù)的應(yīng)用程序。用戶典型地調(diào)用應(yīng)用程序并且隨后必須等待應(yīng)用程序從網(wǎng)絡(luò)資源獲取數(shù)據(jù)使得應(yīng)用程序能呈現(xiàn)當(dāng)前更新的內(nèi)容。



技術(shù)實現(xiàn)要素:

在一些具體實施中,移動設(shè)備可被配置為監(jiān)測環(huán)境、系統(tǒng)和用戶事件。移動設(shè)備可被配置為檢測可觸發(fā)對系統(tǒng)設(shè)置的調(diào)整的一個或多個事件的發(fā)生。

在一些具體實施中,移動設(shè)備可被配置有預(yù)定義和/或動態(tài)定義的屬性。屬性可由系統(tǒng)用來跟蹤系統(tǒng)事件。屬性事件可被存儲并且稍后用于預(yù)測未來發(fā)生的屬性事件。存儲的屬性事件可由系統(tǒng)用來對有關(guān)移動設(shè)備執(zhí)行的處理作出決定。屬性可與允許預(yù)算資源支持系統(tǒng)上的未來事件或活動的預(yù)算相關(guān)聯(lián)。

在一些具體實施中,運行在移動設(shè)備上的各種應(yīng)用程序、功能和進程可提交屬性事件。應(yīng)用程序、功能和進程可稍后基于提交的事件請求預(yù)報。應(yīng)用程序、功能和進程可基于與屬性相關(guān)聯(lián)的預(yù)算以及與報告的事件相關(guān)聯(lián)的成本執(zhí)行預(yù)算。應(yīng)用程序、功能和進程例如可與移動設(shè)備的操作系統(tǒng)或第三方應(yīng)用程序相關(guān)聯(lián)。

在一些具體實施中,移動設(shè)備可被配置為使得經(jīng)常調(diào)用的應(yīng)用程序保持為最新的。移動設(shè)備可保持對用戶調(diào)用應(yīng)用程序時的跟蹤?;谡{(diào)用信息,移動設(shè)備可預(yù)報在一天中應(yīng)用程序何時被調(diào)用。移動設(shè)備隨后可事先啟動應(yīng)用程序和下載更新使得用戶可調(diào)用應(yīng)用程序并查看當(dāng)前更新的內(nèi)容而不必等待應(yīng)用程序下載更新的內(nèi)容。

在一些具體實施中,移動設(shè)備可接收與應(yīng)用程序相關(guān)聯(lián)的指示新內(nèi)容可用于應(yīng)用程序下載的推送通知。移動設(shè)備可在后臺啟動與推送通知相關(guān)聯(lián)的應(yīng)用程序并下載新內(nèi)容。在內(nèi)容被下載之后,移動設(shè)備可呈現(xiàn)指示用戶接收到推送通知的圖形界面。用戶隨后可調(diào)用應(yīng)用程序并查看更新內(nèi)容。

在一些具體實施中,移動設(shè)備可被配置為針對移動設(shè)備上的應(yīng)用程序執(zhí)行進程下載和/或內(nèi)容的上載。例如,專用進程可被配置在移動設(shè)備上用于針對移動設(shè)備上的應(yīng)用程序下載和/或上載內(nèi)容。在正執(zhí)行上載/下載時,可暫?;蚪K止應(yīng)用程序。當(dāng)上載/下載完成時,可調(diào)用應(yīng)用程序。

在一些具體實施中,在運行應(yīng)用程序或訪問網(wǎng)絡(luò)界面之前,移動設(shè)備可被配置為檢查電池電力和蜂窩數(shù)據(jù)使用預(yù)算以確保有足夠電力和數(shù)據(jù)可用于用戶調(diào)用操作。在后臺啟動應(yīng)用程序之前,移動設(shè)備可檢查使用統(tǒng)計值以確定應(yīng)用程序是否有可能在不久的將來由用戶調(diào)用。

在一些具體實施中,屬性事件數(shù)據(jù)可在同一用戶所擁有的移動設(shè)備之間共享。移動設(shè)備可從對等設(shè)備接收事件數(shù)據(jù)并且基于接收的事件數(shù)據(jù)web作出有關(guān)涉及對等設(shè)備的交互或操作的決定。事件數(shù)據(jù)可作為預(yù)報值、統(tǒng)計值和/或原始(例如,未處理的)事件數(shù)據(jù)來共享。移動設(shè)備例如可基于接收的事件數(shù)據(jù)來確定是否與對等設(shè)備進行通信。

特定具體實施提供了至少以下優(yōu)點:可通過響應(yīng)于檢測事件動態(tài)調(diào)整移動設(shè)備的部件節(jié)省電池電力。通過預(yù)期用戶將何時調(diào)用應(yīng)用程序和下載內(nèi)容使得用戶將在調(diào)用應(yīng)用程序時查看更新的內(nèi)容,可改善用戶體驗。

在下面的附圖和具體實施方式中示出了一種或多種具體實施的細節(jié)。其他特征、方面和潛在優(yōu)點將在具體實施方式和附圖以及權(quán)利要求中顯而易見。

附圖說明

圖1示出了配置為執(zhí)行移動設(shè)備的動態(tài)調(diào)整的移動設(shè)備。

圖2示出了用于調(diào)用啟發(fā)式進程的示例性進程。

圖3示出了用于使用啟發(fā)式進程調(diào)整移動設(shè)備的設(shè)置的進程。

圖4示出了用于執(zhí)行應(yīng)用程序的后臺獲取更新的示例性系統(tǒng)。

圖5示出了用于針對移動設(shè)備100上的應(yīng)用程序確定用戶調(diào)用概率的對等預(yù)報。

圖6是用于預(yù)測性地啟動應(yīng)用程序來執(zhí)行后臺更新的示例性進程的流程圖。

圖7是用于確定何時啟動移動設(shè)備上的應(yīng)用程序的示例性進程的流程圖。

圖8是示出了用于趨勢變化表中的條目的狀態(tài)轉(zhuǎn)換的流程圖。

圖9是示出用于將推送通知提供給移動設(shè)備的系統(tǒng)的框圖。

圖10是用于在推送通知服務(wù)器執(zhí)行非喚醒推送的示例性進程的流程圖。

圖11是用于響應(yīng)于低優(yōu)先級推送通知執(zhí)行應(yīng)用程序的后臺更新的示例性進程的流程圖。

圖12是用于響應(yīng)于高優(yōu)先級推送通知執(zhí)行應(yīng)用程序的后臺更新的示例性進程的流程圖。

圖13是用于在移動設(shè)備上執(zhí)行數(shù)據(jù)的后臺下載和/或上載的示例性系統(tǒng)的框圖。

圖14是用于執(zhí)行后臺下載和上載的示例性進程的流程圖。

圖15示出了用于針對移動設(shè)備上的應(yīng)用程序啟用和/或禁用后臺更新的示例性圖形用戶界面(GUI)。

圖16示出了用于在對等設(shè)備之間共享數(shù)據(jù)的示例性系統(tǒng)。

圖17示出了用于在對等設(shè)備之間共享數(shù)據(jù)的示例性進程。

圖18是一個可實現(xiàn)圖1-圖17的特征和進程的示例性計算設(shè)備的框圖。

各附圖中的類似參考符號表示類似的元件。

具體實施方式

概述

本文描述了一種用于基于各種系統(tǒng)事件啟用對移動設(shè)備的調(diào)整以便于在電池壽命、電力需求、熱管理和性能之間的折中的系統(tǒng)架構(gòu)。該系統(tǒng)提供從系統(tǒng)事件學(xué)習(xí)的基本事件采集架構(gòu)和一組啟發(fā)式進程以最大化電池壽命而不對用戶體驗造成明顯降級。該系統(tǒng)監(jiān)測系統(tǒng)定義和客戶端定義的屬性并且可使用系統(tǒng)定義和客戶端定義的屬性來預(yù)測或預(yù)報未來事件的發(fā)生。該系統(tǒng)可基于動態(tài)采集的統(tǒng)計值和/或明確指定的用戶意圖預(yù)期系統(tǒng)的未來行為以及對用于設(shè)備性能的期待。該系統(tǒng)可確定設(shè)置哪些硬件和軟件控制參數(shù)以及將參數(shù)設(shè)置為哪些值從而針對預(yù)期的系統(tǒng)行為改善用戶體驗。該系統(tǒng)在擴展可用于移動設(shè)備的系統(tǒng)和網(wǎng)絡(luò)資源時權(quán)衡系統(tǒng)監(jiān)測和硬件控制以實現(xiàn)用戶體驗的整體改進。因此,該系統(tǒng)可最大化系統(tǒng)和網(wǎng)絡(luò)資源同時使得對用戶體驗的影響最小化。

數(shù)據(jù)采集-以用戶為中心的統(tǒng)計值

圖1示出了配置為執(zhí)行移動設(shè)備100的動態(tài)調(diào)整的示例性移動設(shè)備100。在一些具體實施中,移動設(shè)備100可包括采集有關(guān)設(shè)備狀況、網(wǎng)絡(luò)狀況、系統(tǒng)服務(wù)(例如,守護進程)和用戶行為的事件的采樣守護進程102。例如,采樣守護進程102可采集有關(guān)應(yīng)用程序、傳感器和移動設(shè)備100接收的用戶輸入的統(tǒng)計值并且將統(tǒng)計值存儲在事件數(shù)據(jù)存儲裝置104中??捎蛇\行在移動設(shè)備100上的各種客戶端(例如,應(yīng)用程序、實體、功能、第三方應(yīng)用程序等)使用報告為事件的預(yù)定義或客戶端定義的屬性,將統(tǒng)計值報告給采樣守護進程102。

數(shù)據(jù)采集-事件和屬性

在一些具體實施中,移動設(shè)備100可配置具有用于采集系統(tǒng)和/或應(yīng)用程序事件的框架。例如,移動設(shè)備100可配置具有允許移動設(shè)備100的各種應(yīng)用程序、實體和其他部件將事件提交到采樣守護進程102用于稍后統(tǒng)計分析的應(yīng)用編程界面(API)。

在一些具體實施中,采樣守護進程102在事件數(shù)據(jù)存儲裝置104中記錄的每個事件可包括屬性名(例如,“bundleId”)、屬性值(例如,“聯(lián)系人”)、匿名信標信息、匿名位置信息、日期信息(例如,事件的GMT日期)、時間信息(例如,事件的當(dāng)?shù)?4小時時間)、網(wǎng)絡(luò)質(zhì)量信息、處理器使用度量、盤輸入/輸出度量、當(dāng)前用戶的標識和/或事件類型(例如,啟動、停止、發(fā)生過)。例如,屬性名可識別與事件相關(guān)聯(lián)的屬性類型。屬性名例如可用來標識采樣守護進程102跟蹤的特定度量。屬性值可為與屬性相關(guān)聯(lián)的值(例如,字符串、整型、浮點)。匿名信標信息可指示哪些無線信標(例如,藍牙、藍牙低功耗、Wi-Fi等)落在移動設(shè)備范圍內(nèi)而不用將信標信息綁定或關(guān)聯(lián)到用戶或設(shè)備。類似地,匿名位置信息可識別移動設(shè)備的位置而不用將位置信息綁定或關(guān)聯(lián)到用戶或設(shè)備。例如,位置信息可使用在移動設(shè)備100上配置的各種收發(fā)器從衛(wèi)星數(shù)據(jù)(例如,全球定位衛(wèi)星系統(tǒng))、蜂窩數(shù)據(jù)、Wi-Fi數(shù)據(jù)、藍牙數(shù)據(jù)得出。網(wǎng)絡(luò)質(zhì)量信息可指示如在事件發(fā)生時由移動設(shè)備100所檢測的移動設(shè)備的網(wǎng)絡(luò)(例如,Wi-Fi、蜂窩、衛(wèi)星等)連接的質(zhì)量。

在一些具體實施中,每個事件的事件數(shù)據(jù)可指示事件發(fā)生、啟動或停止。例如,可對指示用于同一屬性的啟動事件和停止事件的針對該屬性的成對事件執(zhí)行時間記賬(例如,持續(xù)時間記賬)。例如,采樣守護進程102可接收用于具有值“聯(lián)系人”的屬性“bundleId”的啟動事件。稍后,采樣守護進程102可接收用于具有值“聯(lián)系人”的屬性“bundleId”的停止事件。采樣守護進程102可將啟動事件的時間與停止事件的時間進行比較以確定“聯(lián)系人”應(yīng)用程序多長時間處于活動。在一些具體實施中,不進行時間記賬的事件可被記錄為點事件(例如,單次出現(xiàn))。例如,與事件發(fā)生時指定瞬時電池水平的“batteryLevel”系統(tǒng)屬性相關(guān)聯(lián)的事件可僅被記錄為事件的發(fā)生。

下表1提供采樣守護進程102在事件數(shù)據(jù)存儲裝置104中記錄的屬性事件條目的示例。第一條目記錄指示“聯(lián)系人”應(yīng)用程序已由用戶“Fred”調(diào)用的“bundleId”事件。該“bundleId”事件為指示Fred已開始使用聯(lián)系人應(yīng)用程序的啟動事件。第二條目為指示移動設(shè)備100的電池水平為46%的“batteryLevel”事件,該事件為發(fā)生類事件(例如,單點事件)。第三條目為與值“George”相關(guān)聯(lián)的“personName”事件。“personName”事件用來記錄用戶Fred已經(jīng)訪問聯(lián)系人應(yīng)用程序中聯(lián)系人"George"的聯(lián)系人信息的事實,這屬于發(fā)生類事件。第四條目記錄指示“聯(lián)系人”應(yīng)用程序已由用戶“Fred”關(guān)閉或隱藏的“bundleId”事件。該bundleId事件為指示Fred已停止使用聯(lián)系人應(yīng)用程序的停止事件。通過記錄用于“bundleID”屬性的啟動和停止事件,采樣守護進程102可基于與啟動和停止事件對應(yīng)的時間戳確定用戶Fred已在2014年5月12日使用聯(lián)系人應(yīng)用程序8分鐘。該屬性事件信息例如可用來預(yù)報有關(guān)移動設(shè)備100上的應(yīng)用程序以及尤其相對于聯(lián)系人應(yīng)用程序的用戶活動。

表格1

預(yù)定義屬性

在一些具體實施中,可使用公知或預(yù)定義屬性將事件數(shù)據(jù)提交到采樣守護進程102。公知或預(yù)定義屬性可為可由移動設(shè)備100的各種應(yīng)用程序、實體、功能或其他部件用來將事件數(shù)據(jù)提交到采樣守護進程102的通用系統(tǒng)屬性。盡管預(yù)定義屬性定義(例如,屬性名、相關(guān)聯(lián)值的數(shù)據(jù)類型等),但是根據(jù)事件不同分配給預(yù)定義屬性的值也可不同。例如,移動設(shè)備100可被配置有用于識別應(yīng)用程序的預(yù)定義屬性“bundleId”和用于識別感興趣的人的“personName”。分配給“bundleId”的值可基于在移動設(shè)備100上處于活動的那些應(yīng)用程序而變化。分配給“personName”的值可基于用戶輸入而變化。例如,如果用戶選擇來自“George”的電子郵件消息,則“personName”屬性值可設(shè)為“George”。如果用戶選擇與“鮑勃”相關(guān)聯(lián)的聯(lián)系人條目,則“personName”屬性值可設(shè)為“鮑勃”。當(dāng)移動設(shè)備100的應(yīng)用程序、實體、功能或其他部件使用預(yù)定義屬性將事件提交到采樣守護進程102時,應(yīng)用程序、實體、功能或其他部件可指定該值與用于該事件的預(yù)定義屬性相關(guān)聯(lián)。在以下段落描述了預(yù)定義或公知的系統(tǒng)事件的示例。

在一些具體實施中,移動設(shè)備100可被配置有為移動設(shè)備100上安裝的應(yīng)用程序(例如,應(yīng)用程序包)指定名稱或標識符的預(yù)定義屬性(例如,“system.bundleId”)。當(dāng)啟用應(yīng)用程序時,應(yīng)用程序管理器106(例如,負責(zé)啟動應(yīng)用程序)可使用采樣守護進程102的API將應(yīng)用程序的標識符或名稱(例如,聯(lián)系人應(yīng)用程序的“聯(lián)系人”)提交作為“system.bundleId”系統(tǒng)屬性的值。采樣守護進程102可例如將“聯(lián)系人”應(yīng)用程序啟動的發(fā)生連同其他事件數(shù)據(jù)作為事件記錄在事件數(shù)據(jù)存儲裝置104中,如上所述。另選地,應(yīng)用程序可使用采樣守護進程102的API來指示分別對應(yīng)于應(yīng)用程序“聯(lián)系人”被調(diào)用以及應(yīng)用程序被隱藏或關(guān)閉時的啟動和停止事件。例如,“bundleId”屬性可用來將應(yīng)用程序啟動事件記錄在移動設(shè)備100上?!癰undleId”屬性可用來將應(yīng)用程序終止事件記錄在移動設(shè)備100上。通過指定與“bundleId”屬性相關(guān)聯(lián)的啟動和停止事件而非僅僅事件的發(fā)生,采樣守護進程102可確定移動設(shè)備100的用戶使用“聯(lián)系人”應(yīng)用程序多長時間。

在一些具體實施中,移動設(shè)備100可被配置有指定移動設(shè)備100的用戶或者對移動設(shè)備100的用戶感興趣的人的名稱或標識符的預(yù)定義屬性(例如,“system.personName”)。例如,當(dāng)?shù)卿?、喚醒或以另外方式訪問移動設(shè)備100時,可生成與“personName”屬性相關(guān)聯(lián)的、識別移動設(shè)備100的當(dāng)前用戶的事件并且提交到采樣守護進程102。當(dāng)用戶訪問與另一人相關(guān)聯(lián)的數(shù)據(jù)時,可生成將其他人識別為對用戶感興趣的人的“personName”屬性事件并且提交到采樣守護進程102。

在一些具體實施中,移動設(shè)備100可被配置有指示移動設(shè)備100的位置的預(yù)定義屬性(例如,“system.anonymizedLocation”)。例如,移動設(shè)備100可將與“anonymizedLocation”屬性相關(guān)聯(lián)的、在事件生成時指定移動設(shè)備100的位置的事件并且提交到采樣守護進程102。位置數(shù)據(jù)可被匿名使得該位置稍后不會被綁定或關(guān)聯(lián)到特定用戶或設(shè)備。例如,可無論何時用戶使用移動設(shè)備100的基于位置的服務(wù)時生成并存儲“anonymizedLocation”屬性事件。

在一些具體實施中,移動設(shè)備100可被配置有指示移動設(shè)備100的飛行模式打開或關(guān)閉的預(yù)定義屬性(例如,“system.airplaneMode”)。例如,當(dāng)用戶打開或關(guān)閉飛行模式時,移動設(shè)備100可生成指示事件發(fā)生時飛行模式狀態(tài)的事件并提交到采樣守護進程102。例如,“airplaneMode”屬性的值可在飛行模式打開時設(shè)為“真”(例如,1)而在飛行模式關(guān)閉時設(shè)為假(例如,0)。采樣守護進程102反過來可將包括“airplaneMode”屬性值的“airplaneMode”事件存儲在事件數(shù)據(jù)存儲裝置104中。

在一些具體實施中,移動設(shè)備100可被配置具有指示移動設(shè)備100的電力線纜插入或未插入的預(yù)定義屬性(例如,system.cablePlugin)。例如,當(dāng)移動設(shè)備100檢測電力線纜已被拔出時,移動設(shè)備100可生成指示“cablePlugin”屬性值為假(例如,0)的事件。當(dāng)移動設(shè)備100檢測到電力線纜已被插入到移動設(shè)備100時,移動設(shè)備100可生成指示“cablePlugin”屬性為真(例如,1)的事件。移動設(shè)備100可將“cablePlugin”事件提交到采樣守護進程102用于存儲在事件數(shù)據(jù)存儲裝置104中。

在一些具體實施中,移動設(shè)備100可被配置有指示移動設(shè)備100的顯示器鎖定或解除鎖定的預(yù)定義屬性(例如,“system.screenLock”)。例如,移動設(shè)備100可檢測移動設(shè)備100的顯示器何時被鎖定(例如,由系統(tǒng)或用戶)或解除鎖定(例如,由用戶)。在檢測到顯示器的鎖定或解除鎖定時,移動設(shè)備100可生成包括“screenLock”屬性的事件并且將用于該事件的“screenLock”屬性值設(shè)為真(例如,鎖定,整數(shù)1)或假(例如,解除鎖定,整數(shù)0)以指示移動設(shè)備100的顯示器被鎖定或解除鎖定。移動設(shè)備100可將“screenLock”事件提交到采樣守護進程102用于存儲在事件數(shù)據(jù)存儲裝置104中。

在一些具體實施中,移動設(shè)備100可被配置有指示移動設(shè)備100是否處于睡眠模式的預(yù)定義屬性(例如,“system.sleepWake”)。例如,移動設(shè)備100可檢測移動設(shè)備100何時進入睡眠模式。移動設(shè)備100可檢測移動設(shè)備100何時退出睡眠模式(例如,喚醒)。在檢測進入或退出睡眠模式時,移動設(shè)備可生成包括“sleepWake”屬性并且把屬性值設(shè)為真或假(例如,分別為整型1或0)以指示發(fā)生“sleepWake”事件時移動設(shè)備100的睡眠模式狀態(tài)的事件。移動設(shè)備100可將“sleepWake”事件提交到采樣守護進程102用于存儲在事件數(shù)據(jù)存儲裝置104中。

在一些具體實施中,移動設(shè)備100可被配置有指示移動設(shè)備100的顯示器是否點亮的預(yù)定義屬性(例如,“system.backlight”)?!氨彻狻睂傩钥杀环峙渲甘颈彻獾膹姸然蛩降闹?。例如,移動設(shè)備100的用戶可調(diào)整移動設(shè)備100的顯示器的光線(背光)的強度。用戶可在環(huán)境光線明亮?xí)r提高背光的強度。用戶可在環(huán)境光線黑暗時降低背光的強度。在檢測到背光設(shè)置的變化時,移動設(shè)備100可生成包括“backlight”屬性以及將屬性值設(shè)為調(diào)整的背光設(shè)置(例如,強度水平)的事件。移動設(shè)備100可將“backlight”變化事件提交到采樣守護進程102用于存儲在事件數(shù)據(jù)存儲裝置104中。

在一些具體實施中,移動設(shè)備100可被配置有指示如由移動設(shè)備100的環(huán)境光線傳感器檢測的環(huán)境光線強度值的預(yù)定義屬性(例如,“system.ALS”)?!癆LS”屬性可被分配指示移動設(shè)備100周圍的環(huán)境光線的強度或水平的值。例如,移動設(shè)備100的環(huán)境光線傳感器可檢測環(huán)境光線強度的變化。移動設(shè)備100可確定強度變化超過某個閾值。在檢測到超過閾值的環(huán)境光線變化時,移動設(shè)備100可生成包括“ALS”屬性以及將屬性值設(shè)為檢測的環(huán)境光線強度值的事件。移動設(shè)備100可將“ALS”變化事件提交到采樣守護進程102用于存儲在事件數(shù)據(jù)存儲裝置104中。

在一些具體實施中,移動設(shè)備100可被配置有指示移動設(shè)備100的接近傳感器何時檢測到移動設(shè)備100的顯示器靠近對象(例如,用戶面部,桌上,等)的預(yù)定義屬性(例如,“system.proximity”)?!皃roximity”屬性可被分配指示移動設(shè)備的顯示器是否鄰近對象的值(例如,真,假,0,1)。例如,移動設(shè)備100的接近傳感器可檢測接近度的變化。在檢測到接近度變化時,移動設(shè)備100可生成包括“proximity”屬性并將屬性值在移動設(shè)備100鄰近對象時設(shè)為真(例如,1)以及在移動設(shè)備100不鄰近對象時設(shè)為假(例如,0)的事件。移動設(shè)備100可將“proximity”變化事件提交到采樣守護進程102用于存儲在事件數(shù)據(jù)存儲裝置104中。

在一些具體實施中,移動設(shè)備100可被配置有指示移動設(shè)備100檢測到的運動類型的預(yù)定義屬性(例如,“system.motionState”)。“motionState”屬性可被分配指示移動設(shè)備是否處于靜止、移動、運行、駕駛、步行等的值。例如,移動設(shè)備100的運動傳感器(例如,加速度計)可檢測移動設(shè)備100的移動。移動設(shè)備100可基于在檢測的移動中檢測到的運動模式分類檢測到的移動。運動模式可被分類為諸如在用戶處于靜止、移動、跑動、駕駛、步行等時的用戶活動。在檢測到運動的變化時,移動設(shè)備100可生成包括“motionState”屬性以及將屬性值設(shè)為檢測到的運動類型(例如,靜止、跑動、步行、駕駛等)的事件。移動設(shè)備100可將“motionState”事件提交到采樣守護進程102用于存儲在事件數(shù)據(jù)存儲裝置104中。

在一些具體實施中,移動設(shè)備100可被配置有指示移動設(shè)備100檢測到的網(wǎng)絡(luò)連接的質(zhì)量的預(yù)定義屬性(例如,“system.networkQuality”)?!皀etworkQuality”屬性可被分配指示在n秒(例如,1毫秒,2秒等)的時間段的網(wǎng)絡(luò)吞吐量值的值。例如,移動設(shè)備100可連接到數(shù)據(jù)網(wǎng)絡(luò)(例如,蜂窩數(shù)據(jù)、衛(wèi)星數(shù)據(jù)、Wi-Fi、互聯(lián)網(wǎng)等)。移動設(shè)備100可在一時間段(例如,5秒)上監(jiān)測網(wǎng)絡(luò)連接的數(shù)據(jù)吞吐量。移動設(shè)備可計算每秒傳輸?shù)臄?shù)據(jù)量(例如,比特/秒、字節(jié)/秒等)。在檢測到吞吐量的變化或者創(chuàng)建新網(wǎng)絡(luò)連接時,移動設(shè)備100可生成包括“networkQuality”屬性以及將屬性值設(shè)為計算的吞吐量值的事件。移動設(shè)備100可將“networkQuality”事件提交到采樣守護進程102用于存儲在事件數(shù)據(jù)存儲裝置104中。

在一些具體實施中,移動設(shè)備100可被配置有指示移動設(shè)備100的內(nèi)部電池的瞬時電量水平的預(yù)定義屬性(例如,“system.batteryLevel”)。“batteryLevel”屬性可被分配指示電池的電量水平(例如,百分比)的值。例如,移動設(shè)備100可周期性地(例如,每5秒、每分鐘、每15分鐘等)確定電池的電量水平并且生成記錄電池的電量水平的“batteryLevel”事件。移動設(shè)備100可監(jiān)測電池電量水平并且確定電量水平何時變化閾值量并且生成記錄電池的電量水平的“batteryLevel”事件。移動設(shè)備100可將“batteryLevel”事件提交到采樣守護進程102用于存儲在事件數(shù)據(jù)存儲裝置104中。

在一些具體實施中,移動設(shè)備100可被配置有指示移動設(shè)備100的熱水平的預(yù)定義屬性(例如,“system.thermalLevel”)。例如,移動設(shè)備100的熱水平可為移動設(shè)備的當(dāng)前工作溫度(例如,攝氏度)。移動設(shè)備100的熱水平可為表示溫度值范圍的水平(例如,高、中、低、正常、異常等)。例如,移動設(shè)備100可被配置有用于監(jiān)測移動設(shè)備100的熱狀態(tài)的設(shè)施或功能。在檢測到溫度變化或熱水平變化時,移動設(shè)備100的熱設(shè)施可生成包括“thermalLevel”屬性以及將屬性值設(shè)為工作溫度或當(dāng)前熱水平的事件。移動設(shè)備100可將“thermalLevel”事件提交到采樣守護進程102用于存儲在事件數(shù)據(jù)存儲裝置104中。

在一些具體實施中,移動設(shè)備100可被配置有指示幾秒(例如,2毫秒、3秒等)時間段內(nèi)移動設(shè)備100的能量使用量的預(yù)定義屬性(例如,“system.energy”)。例如,當(dāng)用戶調(diào)用移動設(shè)備100的功能(例如,應(yīng)用程序調(diào)用、顯示器亮度、數(shù)據(jù)傳輸?shù)?時,移動設(shè)備100可監(jiān)測該功能正運行的時間段內(nèi)的能量使用量從而估計每個活動或功能使用的能量。移動設(shè)備100隨后可生成包括“energy”屬性以及將屬性值設(shè)為計算的平均能量使用量的事件。移動設(shè)備100可將“energy”事件提交到采樣守護進程102用于存儲在事件數(shù)據(jù)存儲裝置104中。

在一些具體實施中,移動設(shè)備100可被配置有指示幾秒(例如,2毫秒、3秒等)時間段內(nèi)移動設(shè)備100的網(wǎng)絡(luò)數(shù)據(jù)使用量的預(yù)定義屬性(例如,“system.networkBytes”)。例如,當(dāng)用戶調(diào)用功能或者發(fā)起需要通過移動設(shè)備100的網(wǎng)絡(luò)連接傳輸數(shù)據(jù)的操作時,移動設(shè)備100可監(jiān)測一段時間內(nèi)的網(wǎng)絡(luò)數(shù)據(jù)使用量以估計每個活動或功能使用或傳輸?shù)木W(wǎng)絡(luò)數(shù)據(jù)量。移動設(shè)備100隨后可生成包括“networkBytes”屬性以及將屬性值設(shè)為計算的平均網(wǎng)絡(luò)數(shù)據(jù)使用量的事件。移動設(shè)備100可將“networkBytes”事件提交到采樣守護進程102用于存儲在事件數(shù)據(jù)存儲裝置104中。

其他預(yù)定義屬性可包括具有指示移動設(shè)備100是否在給電池充電的真/假(例如,1/0)屬性值的“system.chargingStatus”屬性,具有指示當(dāng)前電池電量(例如,mAh,與batteryLevel成比例)的屬性值的“system.batteryCapacity”屬性,以及具有跟蹤對等設(shè)備的出現(xiàn)的設(shè)備標識符(例如,字符串)屬性值的“system.devicePresence”屬性。例如,“devicePresence”屬性可用于預(yù)報當(dāng)調(diào)度對等數(shù)據(jù)共享時對等設(shè)備的出現(xiàn)。

定制屬性

在一些具體實施中,客戶端專用屬性可由采樣守護進程102的客戶端動態(tài)定義。例如,不使用移動設(shè)備100上預(yù)定義(例如,在采樣守護進程102或操作系統(tǒng)中)和配置的屬性,客戶端(例如,第三方應(yīng)用程序)可動態(tài)定義其自身事件屬性。例如,郵件應(yīng)用程序可動態(tài)(例如,在運行時)創(chuàng)建“mailbox”屬性。郵件應(yīng)用程序(“mailapp”)可使用采樣守護進程102的API定義屬性名(例如,“mailapp.mailbox”)和屬性值類型(例如,字符串、整型、浮點)。一旦客戶端已創(chuàng)建(注冊)新定制屬性,客戶端可使用該屬性生成將要存儲在事件數(shù)據(jù)存儲裝置104中的事件。例如,mailapp可使用“mailbox”屬性報告用戶正訪問郵件應(yīng)用程序中的哪個郵箱。如果用戶正訪問“工作”郵箱,則mailapp可使用“mailapp.mailbox”屬性創(chuàng)建事件并且將屬性值設(shè)為“工作”來記錄用戶正訪問“工作”郵箱。采樣守護進程102和客戶端例如隨后可使用存儲的郵箱事件信息來預(yù)測未來用戶可能何時訪問“工作”郵箱。

在一些具體實施中,當(dāng)從移動設(shè)備100去除(例如,刪除、卸載)客戶端應(yīng)用時,可從移動設(shè)備100刪除客戶端應(yīng)用創(chuàng)建的屬性。而且,當(dāng)去除客戶端應(yīng)用時,可刪除與客戶端應(yīng)用相關(guān)聯(lián)的事件數(shù)據(jù)。例如,如果從移動設(shè)備100刪除mailapp,則可從移動設(shè)備100刪除屬性“mailapp.mailbox”連同與該mailapp相關(guān)聯(lián)的所有事件數(shù)據(jù)。

示例性事件生成客戶端

在一些具體實施中,采樣守護進程102可從應(yīng)用程序管理器進程106接收應(yīng)用程序事件(例如,“system.bundleId”事件)。例如,應(yīng)用程序管理器106可為啟動、停止和監(jiān)測移動設(shè)備100上的應(yīng)用程序(例如,應(yīng)用程序108)的進程。在一些具體實施中,應(yīng)用程序管理器106可將運行在移動設(shè)備100上的應(yīng)用程序的啟動和停止時間(例如,“bundleId”啟動和停止事件)報告給采樣守護進程102。例如,當(dāng)用戶調(diào)用或啟動應(yīng)用程序時,應(yīng)用程序管理器106可通過提交指定應(yīng)用程序的名稱或標識符的用于調(diào)用應(yīng)用程序的“bundleId”啟動事件來通知采樣守護進程102應(yīng)用程序調(diào)用。在一些具體實施中,應(yīng)用程序管理器106可指示采樣守護進程102響應(yīng)于推送通知、用戶調(diào)用或預(yù)測或預(yù)報的用戶應(yīng)用程序調(diào)用發(fā)起應(yīng)用程序啟動。當(dāng)應(yīng)用程序終止時,應(yīng)用程序管理器106可通過提交指定應(yīng)用程序的名稱或標識符的用于該應(yīng)用程序的“bundleId”停止事件來通知采樣守護進程102應(yīng)用程序不再運行。

在一些具體實施中,采樣守護進程102可使用應(yīng)用程序啟動和結(jié)束事件(例如,“bundleId”屬性事件)生成每個應(yīng)用程序的使用時間歷史。例如,每個應(yīng)用程序的使用時間歷史可包括針對應(yīng)用程序的一次執(zhí)行自應(yīng)用程序的上一次執(zhí)行以及執(zhí)行持續(xù)時間經(jīng)歷的時間量。采樣守護進程102可保持用戶調(diào)用應(yīng)用程序啟動和/或系統(tǒng)啟動(例如,自動啟動)應(yīng)用程序的獨立歷史。因此,采樣守護進程102可為運行在移動設(shè)備100上的所有應(yīng)用程序保持使用統(tǒng)計值。

在一些具體實施中,采樣守護進程102可從電力監(jiān)測器進程108接收電力事件。例如,電力監(jiān)測器108可監(jiān)測移動設(shè)備100的電池容量、放電、使用和充電特征。電力監(jiān)測器108可確定移動設(shè)備100何時插入到外部電源以及移動設(shè)備100何時處于電池供電。電力監(jiān)測器108可通知采樣守護進程102移動設(shè)備100何時插入到外部電源。例如,電力監(jiān)測器108可在電力監(jiān)測器檢測到移動設(shè)備100當(dāng)前插入到外部電源時向采樣守護進程102發(fā)送具有1(例如,真)的“cablePlugin”屬性值的“cablePlugin”事件。該事件可包括連接外部電源時的電池電量。電力監(jiān)測器108可向采樣守護進程102發(fā)送“能量”屬性事件來報告電池使用量。

在一些具體實施中,電力監(jiān)測器108可通知采樣守護進程102移動設(shè)備100何時從外部電源斷開連接。例如,電力監(jiān)測器108可在電力監(jiān)測器檢測到移動設(shè)備100從外部電源斷開連接時向采樣守護進程102發(fā)送具有0(例如,假)的“cablePlugin”屬性值的“cablePlugin”事件。該消息可包括斷開外部電源連接時的電池電量。因此,采樣守護進程102可保持描述移動設(shè)備100的電池的充電分布(例如,隨時間分布的電量)的統(tǒng)計值。充電分布統(tǒng)計值可包括自上次充電的時間量(例如,自插入到外部電源起經(jīng)過的時間)以及得益于充電的電池電量變化(例如,充電開始水平、充電結(jié)束水平)。

在一些具體實施中,電力監(jiān)測器108可通知采樣守護進程102一天內(nèi)的電池電量變化。例如,電力監(jiān)測器108可在應(yīng)用程序啟動和停止時得到通知,并且響應(yīng)于通知,確定在該時間段內(nèi)耗掉的電池電力的量以及電池中剩余的電量并且將該信息傳輸至采樣守護進程102。例如,電力監(jiān)測器108可向采樣守護進程102發(fā)送“system.energy”事件來指示在應(yīng)用程序處于活動的時間段內(nèi)消耗的能量。

在一些具體實施中,采樣守護進程102可從熱守護進程110接收設(shè)備溫度統(tǒng)計值。例如,熱守護進程110可使用一個或多個溫度傳感器監(jiān)測移動設(shè)備100的工作溫度狀況。熱守護進程110可被配置為周期性地將溫度變化報告給采樣守護進程102。例如,熱守護進程110可每5秒確定移動設(shè)備100的工作溫度并且將移動設(shè)備100的溫度或熱水平報告給采樣守護進程102。例如,熱守護進程110可將“system.thermalLevel”事件發(fā)送給采樣守護進程102以報告移動設(shè)備100的當(dāng)前工作溫度或熱水平。采樣守護進程102可將報告的溫度存儲在事件數(shù)據(jù)存儲裝置104中。

在一些具體實施中,采樣守護進程102可從設(shè)備設(shè)置進程112接收設(shè)備設(shè)置統(tǒng)計值。例如,設(shè)備設(shè)置進程112可為移動設(shè)備100的操作系統(tǒng)的功能或進程。設(shè)備設(shè)置進程112例如可接收用戶輸入來調(diào)整各種設(shè)備設(shè)置,諸如打開/關(guān)閉飛行模式、打開/關(guān)閉Wi-Fi、打開/關(guān)閉漫游等。設(shè)備設(shè)置進程112可將設(shè)備設(shè)置的變化報告給采樣守護進程102。每個設(shè)備設(shè)置可具有對應(yīng)的預(yù)定義事件屬性。例如,設(shè)備設(shè)置進程112可在用戶在移動設(shè)備100上打開或關(guān)閉飛行模式時向采樣守護進程102發(fā)送“system.airplaneMode”事件。采樣守護進程102可基于接收的事件和屬性值生成并存儲用于設(shè)備設(shè)置的統(tǒng)計值。例如,對于每次啟用(或禁用)設(shè)置,采樣守護進程102可存儲指示自先前啟用該設(shè)置起經(jīng)過的時間量以及啟用該設(shè)置的時間量(例如,持續(xù)時間)的數(shù)據(jù)。

類似地,在一些具體實施中,采樣守護進程102可在其他事件發(fā)生時從其他移動設(shè)備100的部件(例如,設(shè)備傳感器114)接收通知。例如,采樣守護進程102可在移動設(shè)備的屏幕打開或關(guān)閉(例如,“system.backlight”事件)時、在移動設(shè)備100把持靠近用戶面部(例如,“system.proximity”事件)時、在檢測到小區(qū)塔不可觸及時、在基帶處理器在搜索模式(例如,“system.btlescan”事件)時、在移動設(shè)備100檢測到用戶正步行、跑動和/或駕駛(例如,“system.motionState”事件)時接收通知。在每種情況下,采樣守護進程102可在事件開始和結(jié)束時接收通知。在每種情況下,采樣守護進程102可生成并存儲指示自上次檢測到該事件起經(jīng)過的時間量以及事件的持續(xù)時間的統(tǒng)計值。采樣守護進程102可接收其他事件通知并生成其他統(tǒng)計值,如針對特定使用情況和場景以下進一步所述。

應(yīng)用程序事件

在一些具體實施中,采樣守護進程102可從移動設(shè)備100上的應(yīng)用程序接收事件信息。例如,移動設(shè)備100上的應(yīng)用程序可生成包括對采樣守護進程102的預(yù)定義或動態(tài)定義的屬性來跟蹤各種專用事件的事件。例如,采樣守護進程102可從日歷應(yīng)用程序116接收日歷事件(例如,包括“calendar.appoinment”、“calendar.meeting”或“calendar.reminder”屬性等)。日歷事件可包括具有指定與各種日歷事件或功能相關(guān)聯(lián)的位置、時間或其他數(shù)據(jù)的值的“calendar.appointment”、“calendar.meeting”或“calendar.reminder”屬性。采樣守護進程102例如可存儲屬性名、屬性持續(xù)時間和/或?qū)傩员徽{(diào)度發(fā)生的時間。在一些具體實施中,采樣守護進程102可從時鐘應(yīng)用程序118接收時鐘事件(例如,包括“clock.alarm”事件)。例如,采樣守護進程102可存儲屬性名(例如,“clock.alarm”)和指示鬧鐘被調(diào)度發(fā)生的時間的值。采樣守護進程102可從其他應(yīng)用程序(例如,媒體應(yīng)用程序、存折應(yīng)用程序等)接收事件信息,如下文進一步所述。

應(yīng)用程序統(tǒng)計值

在一些具體實施中,采樣守護進程102可跨應(yīng)用程序啟動事件采集應(yīng)用程序統(tǒng)計值。例如,采樣守護進程102可跨應(yīng)用程序的許多調(diào)用為每個應(yīng)用程序采集統(tǒng)計值(例如,事件、“bundleId”屬性值)。例如,每個應(yīng)用程序可用其可執(zhí)行文件系統(tǒng)路徑的哈希值和可執(zhí)行內(nèi)容的哈希值來標識,使得相同應(yīng)用程序的不同版本可處理為不同應(yīng)用程序。應(yīng)用程序哈希值例如可在“bundleId”事件中作為“bundleId”屬性的值提交到采樣守護進程102。

在一些具體實施中,采樣守護進程102可保持針對每個應(yīng)用程序跟蹤后臺任務(wù)完成聲明事件的計數(shù)器。例如,每當(dāng)應(yīng)用程序作為后臺任務(wù)(例如,在前臺和/或用戶當(dāng)前使用中不可見)運行時,應(yīng)用程序或應(yīng)用程序管理器106可通知采樣守護進程102應(yīng)用程序何時終止或暫停并且采樣守護進程102可使得計數(shù)器遞增。采樣守護進程102可保持跟蹤跨應(yīng)用程序啟動的、應(yīng)用程序已在后臺運行的累積秒數(shù)的計數(shù)器。例如,采樣守護進程102可分析“bundleId”啟動和停止事件以確定應(yīng)用程序何時啟動和停止并且使用啟動和停止事件的時間戳確定應(yīng)用程序運行的時間長度。在一些具體實施中,采樣守護進程102可保持對數(shù)據(jù)連接數(shù)量計數(shù),跟蹤網(wǎng)絡(luò)數(shù)據(jù)通信量(例如,以字節(jié)計),跟蹤文件系統(tǒng)操作的持續(xù)時間和大小和/或跟蹤與每個應(yīng)用程序相關(guān)聯(lián)的線程數(shù)量的獨立計數(shù)器。采樣守護進程102例如可保持跨應(yīng)用程序啟動應(yīng)用程序保持活動的累積時間量的計數(shù)。這些僅僅是一些各種應(yīng)用程序統(tǒng)計值的示例,可基于采樣守護進程102接收和存儲在事件數(shù)據(jù)存儲裝置104中的事件和屬性數(shù)據(jù)由采樣守護進程102生成應(yīng)用程序統(tǒng)計值。可生成或采集其他統(tǒng)計值,如下文進一步所述。

啟發(fā)式進程

在一些具體實施中,移動設(shè)備100可被配置有可基于采樣守護進程102檢測到的事件調(diào)整設(shè)備部件的設(shè)置的啟發(fā)式進程。例如,啟發(fā)式進程120可包括配置(例如,編程)為響應(yīng)于一個或多個觸發(fā)事件和/或基于采樣守護進程102采集或生成的統(tǒng)計值調(diào)整各種系統(tǒng)設(shè)置(例如,CPU電力、基帶處理器電力、顯示器亮度等)的一個或多個進程。

在一些具體實施中,啟發(fā)式進程120可向采樣守護進程102注冊以在滿足預(yù)定義的一組準則(例如,一些觸發(fā)事件的發(fā)生)時被調(diào)用或激活。觸發(fā)事件可包括調(diào)用媒體播放器應(yīng)用程序(例如,“bundleId”事件)或者檢測用戶開始步行、跑動、駕駛等(例如,“motionState”事件)。觸發(fā)事件可一般化為在事件數(shù)據(jù)104中或由采樣守護進程102檢測到一些特性、數(shù)據(jù)、統(tǒng)計值、事件、屬性、屬性值等時調(diào)用啟發(fā)式進程120。例如,啟發(fā)式進程120可在采樣守護進程102接收應(yīng)用程序啟動通知(例如,指定專用應(yīng)用程序的“bundleId”啟動事件)或溫度(例如,“thermalLevel”事件)高于某一閾值時被調(diào)用。啟發(fā)式進程120可在采樣守護進程102接收與特定屬性或?qū)傩灾迪嚓P(guān)聯(lián)的事件時被調(diào)用。啟發(fā)式進程120可注冊為在單個事件發(fā)生或觀測到統(tǒng)計值時被調(diào)用。啟發(fā)式進程120可注冊為在觀測或檢測到事件、數(shù)據(jù)、屬性、屬性值和/或統(tǒng)計值的組合時被調(diào)用。啟發(fā)式進程120可響應(yīng)于特定用戶輸入(例如,“airplaneMode”事件、“sleepWake”事件等)被觸發(fā)或調(diào)用。當(dāng)采樣進程102檢測到啟發(fā)式進程120注冊的事件時,采樣進程102可調(diào)用啟發(fā)式進程120。

在一些具體實施中,當(dāng)調(diào)用啟發(fā)式進程120時,啟發(fā)式進程120可與采樣守護進程102進行通信,以從事件數(shù)據(jù)存儲裝置104獲取事件數(shù)據(jù)。啟發(fā)式進程120可處理啟發(fā)式進程120自身采集的事件數(shù)據(jù)和/或其他數(shù)據(jù)以確定如何調(diào)整系統(tǒng)設(shè)置來改善移動設(shè)備100的性能,改善使用移動設(shè)備100時的用戶體驗和/或避免移動設(shè)備100的未來問題。

在一些具體實施中,啟發(fā)式進程120可web作出可使得移動設(shè)備100的各種設(shè)備部件122的設(shè)置變化的設(shè)置建議。例如,設(shè)備部件可包括CPU、GPU、基帶處理器、顯示器、GPS、藍牙、Wi-Fi、振動馬達和其他部件。

在一些具體實施中,啟發(fā)式進程120可對控制復(fù)用器124作出設(shè)置建議。例如,控制復(fù)用器124可為在啟發(fā)式進程120提供的部件設(shè)置之間進行仲裁的進程以及影響或改變移動設(shè)備100的部件的設(shè)置的移動設(shè)備100的其他進程和/或功能。例如,熱守護進程110可為配置為基于檢測到移動設(shè)備100處于熱事件中(例如,高于閾值溫度)對CPU電力、顯示亮度、基帶處理器電力和其他部件設(shè)置web作出調(diào)整的啟發(fā)式進程。然而,啟發(fā)式進程120也可被配置為對CPU電力、顯示亮度、基帶處理器電力和其他部件設(shè)置web作出調(diào)整。因此,在一些具體實施中,啟發(fā)式進程120和熱守護進程110可對控制復(fù)用器124web作出設(shè)置調(diào)整建議并且控制復(fù)用器124可確定web作出哪些設(shè)置調(diào)整。例如,控制復(fù)用器124可對進程做優(yōu)先級處理并且基于推薦進程的優(yōu)先級執(zhí)行調(diào)整。因此,如果熱守護進程110為比啟發(fā)式進程120優(yōu)先級高的進程,則控制復(fù)用器124可根據(jù)熱守護進程110而不是啟發(fā)式進程120的建議調(diào)整CPU、顯示器、基帶處理器等的設(shè)置。

在一些具體實施中,移動設(shè)備100可配置有多個啟發(fā)式進程120。啟發(fā)式進程120可在空中配置或重新配置。例如,每個啟發(fā)式進程120的參數(shù)(例如,觸發(fā)、閾值、準則和輸出)可通過網(wǎng)絡(luò)(例如,蜂窩數(shù)據(jù)連接、Wi-Fi連接等)被設(shè)定或調(diào)整。在一些具體實施中,可將新啟發(fā)式進程120添加到移動設(shè)備100。例如,隨時間推移,觸發(fā)事件、統(tǒng)計數(shù)據(jù)和設(shè)備設(shè)置之間的新關(guān)聯(lián)性可由系統(tǒng)開發(fā)者確定。在識別這些新關(guān)聯(lián)性時,可開發(fā)新啟發(fā)式進程120來調(diào)整系統(tǒng)設(shè)置以考慮新確定的關(guān)系。在一些具體實施中,可通過網(wǎng)絡(luò)將新啟發(fā)式進程120添加到移動設(shè)備100。例如,新啟發(fā)式進程120可在空中(例如,蜂窩數(shù)據(jù)連接、Wi-Fi連接等)下載或安裝在移動設(shè)備100上。

示例性啟發(fā)式進程

在一些具體實施中,啟發(fā)式進程120可被配置為調(diào)整移動設(shè)備100的系統(tǒng)設(shè)置以防止移動設(shè)備100在用戶口袋中過熱。例如,這種口袋變熱啟發(fā)式進程可被配置為向采樣守護進程102注冊以在移動設(shè)備的顯示器關(guān)閉(例如,“system.backlight”事件具有0/假的屬性值)和移動設(shè)備100不顯示任何娛樂媒體(例如,音樂、電影、視頻等)時被調(diào)用。例如,當(dāng)被調(diào)用時,口袋變熱啟發(fā)式進程可推薦減小CPU電力和GPU電力以降低移動設(shè)備100的工作溫度。

在一些具體實施中,啟發(fā)式進程120可被配置為在移動設(shè)備的顯示器未被使用(例如,“system.backlight”事件具有0/假的屬性值)時調(diào)整位置精度。例如,如果移動設(shè)備的顯示器未被使用(例如,顯示器關(guān)閉,如由上述的“backlight”屬性事件所指示),則移動設(shè)備100無法為用戶顯示地圖信息或方向。因此,用戶不可能使用移動設(shè)備100的位置服務(wù)并且可調(diào)整位置服務(wù)(例如,GPS定位、Wi-Fi定位、蜂窩定位等)以使用較少電力。位置精度啟發(fā)式進程可向采樣守護進程102注冊以在移動設(shè)備的顯示器關(guān)閉時被調(diào)用。當(dāng)被調(diào)用時,啟發(fā)式進程可調(diào)整GPS處理器、Wi-Fi收發(fā)器、蜂窩收發(fā)器、基帶處理器的電力水平或者終止用來確定移動設(shè)備100的位置的進程從而節(jié)省移動設(shè)備100的能量資源。

在一些具體實施中,啟發(fā)式進程120可被配置為響應(yīng)于用戶行為調(diào)整移動設(shè)備的環(huán)境光線傳感器的設(shè)置。例如,該用戶自適應(yīng)環(huán)境光傳感器(ALS)啟發(fā)式進程可在采樣守護進程102接收到指示環(huán)境光傳感器檢測到移動設(shè)備100周圍的環(huán)境光的變化,環(huán)境光傳感器系統(tǒng)調(diào)整顯示器的亮度和/或用戶提供輸入來調(diào)整顯示器的亮度的數(shù)據(jù)(例如,“ALS”屬性事件)時由采樣守護進程102調(diào)用。

當(dāng)被調(diào)用時,用戶自適應(yīng)ALS啟發(fā)式進程可相對于ALS顯示器調(diào)整和用戶發(fā)起的顯示器調(diào)整從采樣守護進程102請求另外的信息以確定是否存在指示ALS何時將顯示器亮度調(diào)高或調(diào)低以及用戶在相反方向調(diào)整顯示器亮度的用戶輸入的模式(例如,“system.backlight”事件之后的“system.ALS”事件)。例如,用戶可乘汽車或火車上班。在行駛中汽車燈會被打開和關(guān)閉。環(huán)境光傳感器可檢測環(huán)境光的變化并且當(dāng)燈亮?xí)r增加顯示器亮度。由于燈僅僅暫時點亮,所以用戶可在在燈關(guān)閉時降低顯示器亮度。用戶輸入的這種模式可被跟蹤(例如,通過“backlight”屬性事件)并且通過啟發(fā)式進程與一天中的時間、日歷和鬧鐘事件條目或行程模式相關(guān)聯(lián)以確定響應(yīng)于ALS顯示器調(diào)整用戶調(diào)整顯示器亮度的情形或背景。一旦用戶自適應(yīng)ALS啟發(fā)式進程確定輸入和背景模式,則啟發(fā)式進程可或多或少積極主動地調(diào)整ALS的設(shè)置。例如,可調(diào)整ALS以在確定的一天中的時間、日歷或鬧鐘條目或行程模式期間或多或少頻繁地檢查環(huán)境光的水平并且相應(yīng)地調(diào)整顯示器亮度。

上述啟發(fā)式進程為啟發(fā)式進程的一些示例以及它們可如何在本文所述的系統(tǒng)中實現(xiàn)。隨時間開發(fā)出的其他啟發(fā)式進程可實現(xiàn)并添加到系統(tǒng)中。例如,另外的啟發(fā)式進程可被配置或編程為響應(yīng)于檢測到與溫度測量有關(guān)的事件或事件模式、用戶輸入、時鐘事件(例如,鬧鐘)、日歷事件和/或在移動設(shè)備上發(fā)生或檢測到的其他事件調(diào)整移動設(shè)備的CPU、GPU、基帶處理器或其他其他部件。

示例性啟發(fā)式注冊和調(diào)用進程

圖2示出了用于調(diào)用啟發(fā)式進程的示例性進程200。在步驟202處,可對采樣守護進程102進行初始化。例如,可在移動設(shè)備100的啟動期間對采樣守護進程102進行初始化。

在步驟204處,采樣守護進程102可在采樣守護進程102的初始化期間調(diào)用在移動設(shè)備100上配置的啟發(fā)式進程。例如,采樣守護進程102可使每個啟發(fā)式進程120在移動設(shè)備100上執(zhí)行并且運行通過其初始化子例程。

在步驟206處,采樣守護進程102可從每個啟發(fā)式進程120接收事件注冊消息。例如,在啟發(fā)式進程120的初始化子例程期間,啟發(fā)式進程120可向采樣守護進程102發(fā)送指示哪些屬性事件將觸發(fā)對啟發(fā)式進程120的調(diào)用的信息。采樣守護進程102例如可將注冊信息存儲在數(shù)據(jù)庫,諸如事件數(shù)據(jù)存儲裝置104中。注冊信息可包括啟發(fā)式進程的標識(例如,可執(zhí)行名稱、文件系統(tǒng)路徑等)和事件準則(屬性的標識、屬性值、閾值、范圍等)使得采樣守護進程102可在檢測到指定事件時調(diào)用啟發(fā)式進程120。

在步驟208處,采樣守護進程102可接收屬性事件數(shù)據(jù)。例如,采樣守護進程102可從包括應(yīng)用程序管理器106、傳感器114、日歷116和時鐘118的各種系統(tǒng)部件接收屬性事件數(shù)據(jù),如上所述。

在步驟210處,采樣守護進程102可將接收到的屬性事件數(shù)據(jù)與啟發(fā)式注冊數(shù)據(jù)進行比較。例如,在屬性事件數(shù)據(jù)被報告給采樣守護進程102時,采樣守護進程102可將事件數(shù)據(jù)(例如,屬性值)或從事件數(shù)據(jù)生成的統(tǒng)計值與從啟發(fā)式進程120接收的注冊信息進行比較。

在步驟212處,采樣守護進程102可基于在步驟210處執(zhí)行的比較調(diào)用啟發(fā)式進程。例如,如果事件數(shù)據(jù)(例如,屬性數(shù)據(jù))和/或統(tǒng)計值滿足啟發(fā)式進程120的啟發(fā)式注冊數(shù)據(jù)中指定的準則,則采樣守護進程102可調(diào)用啟發(fā)式進程120。例如,如果事件數(shù)據(jù)和/或統(tǒng)計值數(shù)據(jù)跨過注冊期間啟發(fā)式進程針對事件指定的某個閾值,則啟發(fā)式進程可由采樣守護進程102調(diào)用。另選地,只有發(fā)生特定屬性事件才使得調(diào)用啟發(fā)式進程120。

圖3示出了用于使用啟發(fā)式進程120調(diào)整移動設(shè)備100的設(shè)置的進程300。在步驟302處,對啟發(fā)式進程120進行初始化。例如,啟發(fā)式進程120可由采樣守護進程102調(diào)用使得啟發(fā)式進程120可運行通過其初始化子例程運行。例如,可對調(diào)用進行參數(shù)化處理來指示在該調(diào)用期間啟發(fā)式進程120將運行通過其初始化子例程。

在步驟304處,啟發(fā)式進程120可針對系統(tǒng)事件向采樣守護進程102注冊。例如,在初始化期間,啟發(fā)式進程120可向采樣守護進程102發(fā)送包括事件標識、閾值、屬性、屬性值或用于調(diào)用啟發(fā)式進程120的其他準則的消息。當(dāng)事件發(fā)生和/或滿足準則時,采樣守護進程102可調(diào)用啟發(fā)式進程120。

在步驟306處,啟發(fā)式進程120可關(guān)閉或終止。例如,在注冊準則滿足用于啟發(fā)式進程120之前系統(tǒng)不需要啟發(fā)式進程120。因此,為了節(jié)省設(shè)備資源(例如,電池電力、處理電力等),啟發(fā)式進程120被終止、關(guān)閉或暫停直到需要時為止(例如,采樣守護進程102觸發(fā))。

在步驟308處,可重啟啟發(fā)式進程120。例如,采樣守護進程102可在采樣守護進程102確定滿足在注冊消息中啟發(fā)式進程120指定的準則時調(diào)用啟發(fā)式進程120。

在步驟310處,啟發(fā)式進程120可從采樣守護進程102獲取事件數(shù)據(jù)。例如,一旦重啟,啟發(fā)式進程120可查詢采樣守護進程102用于另外的屬性事件數(shù)據(jù)。啟發(fā)式進程120可被配置為與其他系統(tǒng)資源、進程、傳感器等交互來根據(jù)需要采集數(shù)據(jù)。

在步驟312處,啟發(fā)式進程120可處理事件數(shù)據(jù)來確定部件設(shè)置。例如,啟發(fā)式進程120可使用來自采樣守護進程102的事件數(shù)據(jù)和/或統(tǒng)計值和/或從系統(tǒng)的其他部件采集的數(shù)據(jù)來確定如何調(diào)整移動設(shè)備100的各種部件的設(shè)置。例如,如果啟發(fā)式進程120確定移動設(shè)備100太熱,則啟發(fā)式進程120可確定移動設(shè)備100的哪些電力設(shè)置將降低移動設(shè)備100的工作溫度。

在步驟314處,啟發(fā)式進程120可將確定的部件設(shè)置傳輸?shù)娇刂茝?fù)用器124。例如,控制復(fù)用器124可對從啟發(fā)式進程120和其他系統(tǒng)部件(例如,熱守護進程110)接收的設(shè)備設(shè)置建議進行仲裁??刂茝?fù)用器124隨后可根據(jù)接收的設(shè)置建議調(diào)整移動設(shè)備100的各種部件(例如,CPU、GPU、基帶處理器、顯示器等)。

預(yù)報事件

在一些具體實施中,采樣守護進程102可使用事件數(shù)據(jù)存儲裝置104中存儲的屬性事件數(shù)據(jù)(例如,歷史數(shù)據(jù))來預(yù)測未來事件的發(fā)生。例如,可分析“bundleId”屬性事件來預(yù)測用戶將何時調(diào)用應(yīng)用程序(例如,任何應(yīng)用程序或?qū)S脩?yīng)用程序)??煞治鲋付ㄌ囟娮余]件文件夾(例如,設(shè)為“工作”文件夾的“mailbox”屬性值)的“mailapp.mailbox”事件來預(yù)測用戶將何時使用“mailapp”應(yīng)用程序的特定電子郵件文件夾。

事件歷史窗口規(guī)范

在一些具體實施中,可基于事件歷史窗口規(guī)范生成事件預(yù)報。例如,窗口規(guī)范可由客戶端生成來指定感興趣的時間段、或感興趣的復(fù)發(fā)時間段,客戶端希望使得事件預(yù)報基于該窗口規(guī)范。窗口規(guī)范可包括四個分量:啟動時間、結(jié)束時間、復(fù)發(fā)寬度和復(fù)發(fā)頻率。啟動時間可指示歷史上窗口將啟動的日期和/或時間。結(jié)束時間可指示歷史上窗口將結(jié)束的日期和/或時間。復(fù)發(fā)寬度可指示客戶端感興趣的時間框(例如,始于啟動時間的四個小時)。復(fù)發(fā)頻率可指示時間框?qū)⑹加趩訒r間重復(fù)的頻率(例如,每8小時、每兩天、每星期、每兩個星期等)。

在一些具體實施中,只有在生成事件預(yù)報時才將分析在指定時間框內(nèi)(例如,感興趣的時間段)發(fā)生的事件。例如,如果當(dāng)前日期為2014年5月13日,窗口規(guī)范可指定2014年5月11日中午12點為啟動時間,5月12日中午12點為結(jié)束時間,復(fù)發(fā)寬度為1小時,以及復(fù)發(fā)頻率為4小時。該窗口規(guī)范將使得采樣守護進程102在每1小時框內(nèi)(例如,感興趣的時間段)分析事件數(shù)據(jù),事件數(shù)據(jù)每4小時發(fā)生,始于2014年5月11日中午12點,結(jié)束于2014年5月12日中午12點(例如,框1:2014年5月11日中午12點到下午1點;框2:

2014年5月11日下午4點到5點;框3:2014年5月11日晚上8點到9點等)。在一些具體實施中,當(dāng)未指定復(fù)發(fā)寬度時,將分析從啟動時間到結(jié)束時間的整個時間段來預(yù)報事件。

在一些具體實施中,采樣守護進程102可自動生成事件歷史窗口規(guī)范。例如,采樣守護進程102可識別事件數(shù)據(jù)存儲裝置104中存儲的事件歷史數(shù)據(jù)中的模式。如果客戶端請求針對“bundleId”事件的預(yù)報但未提供窗口規(guī)范,則采樣守護進程102例如可識別指示應(yīng)用程序通常由用戶在早上8點到9點,11點30到下午1點30以及晚上7點到11點調(diào)用的用于“bundleId”屬性/事件的模式。采樣守護進程102可自動生成包括那些時間段并且排除那天中的其他時間的窗口規(guī)范使得請求的預(yù)報將專注于與所請求屬性有關(guān)的時間段。類似地,采樣守護進程102可針對特定(例如,指定)屬性值自動生成事件歷史窗口規(guī)范。例如,如果客戶端針對具有屬性值“mailapp”的“bundleId”事件請求預(yù)報,則采樣守護進程102可分析事件歷史數(shù)據(jù)來識別與“mailapp”值有關(guān)的發(fā)生模式。如果“mailapp”“bundleId”屬性值在每天早上10點、12點和下午5點記錄在事件歷史數(shù)據(jù)中,則采樣守護進程102可生成指定圍繞那天的那些時間的感興趣的時間段的窗口規(guī)范。

臨時預(yù)報

在一些具體實施中,可為屬性或?qū)傩灾瞪膳R時預(yù)報。臨時預(yù)報例如可指示與屬性或?qū)傩灾迪嚓P(guān)聯(lián)的事件在一天中的什么時間有可能發(fā)生。例如,采樣守護進程102的客戶端可請求對上一星期(例如,過去的7天)“bundleId”屬性(例如,應(yīng)用程序啟動)的臨時預(yù)報。為了生成預(yù)報,一天24小時可被分成96個每個為15分鐘長的時隙。對于過去七天中每一天的特定時隙(例如,下午1點到1點15分),采樣守護進程102可確定“bundleId”事件是否發(fā)生并且生成該時隙的分數(shù)。如果“bundleId”事件發(fā)生在7天中第2天中的特定時隙期間,則“bundleId”事件將在特定時隙(例如,下午1點到1點15分)發(fā)生的概率(例如,分數(shù))為0.29(例如,2除以7)。如果“bundleId”事件發(fā)生在7天中第4天中的不同時隙(例如,中午12點15分到12點30分)期間,則“bundleId”事件將在該時隙期間發(fā)生的概率(例如,分數(shù))為0.57(例如,4除以7)。

類似地,客戶端可針對特定屬性值請求臨時預(yù)報。例如,不同于針對“bundleId”屬性(例如,“bundleId”事件)請求臨時預(yù)報,客戶端可針對“bundleId”屬性值為“mailapp”的“bundleId”事件請求臨時預(yù)報。因此,客戶端可接收用戶在一天中可能調(diào)用“mailapp”應(yīng)用程序的時間(例如,15分鐘時隙)的指示。

在一些具體實施中,可基于事件歷史窗口規(guī)范生成臨時預(yù)報。例如,如果客戶端提供指定感興趣的4小時時間段的窗口規(guī)范,則臨時預(yù)報將僅生成落在感興趣的4小時時間段內(nèi)的15分鐘時隙的可能性分數(shù)。例如,如果感興趣的時間段對應(yīng)于前3天中每一天的中午12點到下午4點,則將在感興趣的4小時時間段內(nèi)生成16個時隙并且將針對16個15分鐘時隙的每一個生成分數(shù)。在指定的感興趣的4小時時間段之外的時隙,將不生成分數(shù)。

對等預(yù)報

在一些具體實施中,采樣守護進程102可為屬性生成對等預(yù)報。例如,對等預(yù)報可針對相對于相同屬性的所有值的感興趣時間段期間發(fā)生(例如,出現(xiàn))的屬性指示值的相對可能性。例如,采樣守護進程102的客戶端可請求在如與該請求一起提交的窗口規(guī)范所指定的感興趣的時間段(例如,上午11點到下午1點)上“bundleId”屬性的對等預(yù)報。如果在感興趣的時間段期間,具有屬性值“郵件應(yīng)用程序”、“聯(lián)系人”、“日歷”、“web瀏覽器”、“郵件應(yīng)用程序”、“web瀏覽器”、“郵件應(yīng)用程序”的“bundleId”事件發(fā)生,則“郵件應(yīng)用程序”發(fā)生的相對可能性(即,分數(shù))為0.43(例如,3/7),“web瀏覽器”發(fā)生的相對可能性為0.29(例如,2/7)以及“聯(lián)系人”或“日歷”發(fā)生的相對可能性為0.14(例如,1/7)。

在一些具體實施中,采樣守護進程102的客戶端可為屬性請求對等預(yù)報。例如,如果客戶端為屬性請求對等預(yù)報而不為屬性指定值,則采樣守護進程102將在感興趣的時間段內(nèi)生成對等預(yù)報并且為屬性的所有值返回各種概率分數(shù)。使用上述示例性對等預(yù)報,采樣守護進程102將屬性值和分數(shù)的列表返回到請求客戶端,例如:“郵件應(yīng)用程序”:0.43,“web瀏覽器”:0.29,“聯(lián)系人”:0.14,“日歷”:0.14。

在一些具體實施中,采樣守護進程102的客戶端可為屬性值請求對等預(yù)報。例如,客戶端為具有“郵件應(yīng)用程序”的值的“bundleId”屬性請求對等預(yù)報。采樣守護進程102可根據(jù)客戶端提供的窗口規(guī)范為“bundleId”屬性生成對等預(yù)報,如上所述。例如,采樣守護進程102可計算“郵件應(yīng)用程序”發(fā)生的相對可能性(即,分數(shù))為0.43(例如,3/7),“web瀏覽器”發(fā)生的相對可能性為0.29(例如,2/7)以及“聯(lián)系人”或“日歷”發(fā)生的相對可能性為0.14(例如,1/7)。采樣守護進程102可將請求的“郵件應(yīng)用程序”值的分數(shù)(例如,0.43)返回到客戶端。如果未在如窗口規(guī)范指定的感興趣的時間段中代表所請求值,則可將0值返回到客戶端。

全景預(yù)報

在一些具體實施中,可生成全景預(yù)報來預(yù)測屬性事件的發(fā)生。例如,上述的臨時和對等預(yù)報使用針對單個屬性或?qū)傩灾档氖录南鄬Πl(fā)生頻率來預(yù)測該屬性的未來發(fā)生。該“頻率”預(yù)報類型(例如,發(fā)生頻率)僅使用與預(yù)報請求中指定的屬性或?qū)傩灾迪嚓P(guān)聯(lián)的數(shù)據(jù)。相對照,“全景”預(yù)報可使用在針對在預(yù)報請求中指定的屬性或?qū)傩灾到邮盏氖录?shù)據(jù)中的其他數(shù)據(jù)(例如,位置數(shù)據(jù)、信標數(shù)據(jù)、網(wǎng)絡(luò)質(zhì)量等)。在一些具體實施中,全景預(yù)報可使用來自于其他屬性或?qū)傩灾迪嚓P(guān)聯(lián)的事件的數(shù)據(jù)。例如,當(dāng)客戶端針對指定屬性或?qū)傩灾嫡埱笈R時預(yù)報或?qū)Φ阮A(yù)報以及還指定預(yù)報類型(極,預(yù)報風(fēng)格)為全景時,采樣守護進程102將分析指定屬性或?qū)傩灾档氖录?shù)據(jù)以及其他屬性和屬性值的事件數(shù)據(jù)以識別指定事件與采樣守護進程102接收的其他事件之間的關(guān)聯(lián)性。例如,具有值“郵件應(yīng)用程序”的屬性“bundleId”的頻率預(yù)報可為上午9點15分鐘時隙分配分數(shù)0.4。然而,全景預(yù)報可確定在“郵件應(yīng)用程序”屬性值和用戶的工作位置之間存在很強相關(guān)聯(lián)。例如,全景預(yù)報可確定用戶是否處在與工作相關(guān)聯(lián)的位置,郵件應(yīng)用程序在上午9點15分鐘時隙的90%的時間被調(diào)用。因此,采樣守護進程102可為上午9點15分鐘時隙的“郵件應(yīng)用程序”預(yù)報分數(shù)分配較高分數(shù)(例如,0.9)。

類似地,采樣守護進程102可在“郵件應(yīng)用程序”“bundleId”屬性值和與“motionState”屬性值“stationary”相關(guān)聯(lián)的事件的發(fā)生之間發(fā)現(xiàn)很強關(guān)聯(lián)性。例如,采樣守護進程102可確定在郵件應(yīng)用程序的使用和處于靜止中的移動設(shè)備100之間的關(guān)聯(lián)性為95%。采樣守護進程102可確定在郵件應(yīng)用程序的使用和處于運動中的移動設(shè)備100之間的關(guān)聯(lián)性為5%。因此,采樣守護進程102可基于移動設(shè)備正在運動或處于靜止調(diào)整特定時隙內(nèi)“郵件應(yīng)用程序”屬性值的預(yù)報分數(shù)(例如,0.95或0.05)。

計分板-頻率對全景

在一些具體實施中,采樣守護進程102可跟蹤哪個預(yù)報類型為事件的更好的預(yù)測因子。例如,當(dāng)采樣守護進程102接收屬性事件時,采樣守護進程102可為與接收的事件相關(guān)聯(lián)的屬性或?qū)傩灾瞪深l率和全景預(yù)報并且確定哪種預(yù)報類型為接收的屬性事件的更好的預(yù)測因子。以不同方式論述,即使緊接著接收到屬性事件之前生成預(yù)報,采樣守護進程102可確定頻率預(yù)報類型或全景預(yù)報類型將為接收的屬性事件的更好的預(yù)測因子。

在一些具體實施中,采樣守護進程102可為每種預(yù)報類型(例如,默認、全景)保持計分板。例如,每次采樣守護進程102確定頻率預(yù)報類型將為接收事件的更好的預(yù)測因子時,采樣守護進程102可將頻率預(yù)報類型的分數(shù)(例如,計數(shù)器)遞增。每次采樣守護進程102確定全景預(yù)報類型將為接收事件的更好的預(yù)測因子時,采樣守護進程102可將頻率預(yù)報類型的分數(shù)(例如,計數(shù)器)遞增。

在一些具體實施中,采樣守護進程102可基于為每種預(yù)報類型(例如,頻率、全景)生成的分數(shù)確定默認預(yù)報類型。例如,如果計分板進程為全景預(yù)報類型生成較高分數(shù),則全景將被分配為默認預(yù)報類型。如果計分板進程為頻率預(yù)報類型生成較高分數(shù),則頻率將被分配為默認預(yù)報類型。當(dāng)客戶端請求對等或臨時預(yù)報時,則客戶端可指定預(yù)報類型(例如,全景、頻率、默認)。如果客戶端未指定預(yù)報類型,則默認預(yù)報類型將用來生成對等和/或臨時預(yù)報。

屬性統(tǒng)計值

在一些具體實施中,客戶端可請求采樣守護進程102生成屬性或?qū)傩灾档慕y(tǒng)計值。例如,類似于預(yù)報生成,客戶端可指定將生成屬性或?qū)傩灾档慕y(tǒng)計值的歷史窗口。采樣守護進程102將在生成指定屬性或?qū)傩灾档慕y(tǒng)計值時分析在指定歷史窗口內(nèi)發(fā)生的屬性事件??蛻舳苏埱罂芍付ú蓸邮刈o進程102將生成以下哪些統(tǒng)計值。

在一些具體實施中,采樣守護進程102可為屬性或?qū)傩灾瞪伞坝嫈?shù)”統(tǒng)計值。例如,“計數(shù)”統(tǒng)計值可對在指定歷史窗口內(nèi)發(fā)生的、與指定屬性或?qū)傩灾迪嚓P(guān)聯(lián)的事件數(shù)量計數(shù)。

在一些具體實施中,采樣守護進程102可基于屬性值生成統(tǒng)計值。例如,客戶端可請求并且采樣守護進程102可返回指定歷史窗口中屬性的第一值和/或最后值??蛻舳丝烧埱蟛⑶也蓸邮刈o進程102可為指定歷史窗口內(nèi)與指定屬性相關(guān)聯(lián)的所有值返回最小、最大、平均、模式和標準偏差。采樣守護進程102可生成或確定哪些值與請求的百分位數(shù)(例如,第10個、第25個、第50個、第75個、第90個等等)相關(guān)聯(lián)。

在一些具體實施中,采樣守護進程102可生成持續(xù)時間統(tǒng)計值。例如,采樣守護進程102可通過將屬性啟動事件和屬性停止事件比較來確定與屬性值相關(guān)聯(lián)的持續(xù)時間。啟動事件發(fā)生和停止事件發(fā)生之間的時間差將為事件的持續(xù)時間。在一些具體實施中,客戶端可請求并且采樣守護進程102可為指定歷史窗口內(nèi)與指定屬性或?qū)傩灾迪嚓P(guān)聯(lián)的所有持續(xù)時間返回最小、最大、平均、模式和標準偏差。采樣守護進程102可生成或確定哪些持續(xù)時間值與請求的百分位數(shù)(例如,第10個、第25個、第50個、第75個、第90個等等)相關(guān)聯(lián)。

在一些具體實施中,采樣守護進程102可生成事件間隔統(tǒng)計值。例如,采樣守護進程102可通過將屬性事件的第一次發(fā)生與屬性事件的隨后發(fā)生進行比較確定與屬性值相關(guān)聯(lián)的事件的到達或報告相關(guān)聯(lián)的時間間隔。第一次事件發(fā)生和隨后事件發(fā)生之間的時間差將為事件發(fā)生之間的時間間隔。在一些具體實施中,客戶端可請求并且采樣守護進程102可為指定歷史窗口內(nèi)與指定屬性或?qū)傩灾迪嚓P(guān)聯(lián)的所有時間間隔值返回最小、最大、平均、模式和標準偏差。采樣守護進程102可生成或確定哪些時間間隔值與請求的百分位數(shù)(例如,第10個、第25個、第50個、第75個、第90個等等)相關(guān)聯(lián)。

保持應(yīng)用程序更新-獲取更新

圖4示出了用于執(zhí)行應(yīng)用程序的后臺獲取更新的示例性系統(tǒng)400。在一些具體實施中,移動設(shè)備100可被配置為預(yù)測性地啟動應(yīng)用程序作為移動設(shè)備100的后臺進程,使得應(yīng)用程序可在用戶期望調(diào)用應(yīng)用程序時下載內(nèi)容并更新其界面。例如,采樣守護進程102保持的用戶應(yīng)用程序啟動歷史數(shù)據(jù)(例如,“system.bundleId”啟動事件)可用來預(yù)報(預(yù)測)用戶將何時調(diào)用移動設(shè)備100的應(yīng)用程序。這些預(yù)測的應(yīng)用程序可在用戶調(diào)用之前由應(yīng)用程序管理器106啟動使得用戶將無需等待用戶調(diào)用的應(yīng)用程序下載當(dāng)前內(nèi)容和更新應(yīng)用程序的圖形界面。

確定何時啟動應(yīng)用程序-臨時預(yù)報

在一些具體實施中,應(yīng)用程序管理器106可從采樣守護進程102請求應(yīng)用程序調(diào)用預(yù)報。例如,采樣守護進程102可提供允許應(yīng)用程序管理器106請求對移動設(shè)備100上的應(yīng)用程序啟動(例如,“bundleId”啟動事件)的臨時預(yù)報的界面。采樣守護進程102可接收指示用戶何時調(diào)用移動設(shè)備100上的應(yīng)用程序的事件(例如,“bundleId”啟動事件),如上所述。當(dāng)應(yīng)用程序管理器106請求“bundleId”屬性的臨時預(yù)報時,采樣守護進程102可分析存儲在事件數(shù)據(jù)存儲裝置104中的“bundleId”事件以確定用戶通常在一天中什么時間(例如,在哪個15分鐘時隙)調(diào)用應(yīng)用程序。例如,采樣守護進程102可通過用戶使用上述臨時預(yù)報機制計算一天中的特定時間或時間段將包括對應(yīng)用程序的調(diào)用的概率。

在一些具體實施中,應(yīng)用程序管理器106可在應(yīng)用程序管理器106的初始化期間從采樣守護進程102請求對“bundleId”屬性的臨時預(yù)報。例如,應(yīng)用程序管理器106可在移動設(shè)備100的啟動期間被調(diào)用或啟動。當(dāng)應(yīng)用程序管理器106正在初始化時,應(yīng)用程序管理器106可請求對接下來的24小時的應(yīng)用程序調(diào)用(例如,“bundleId”啟動事件)的臨時預(yù)報。一旦經(jīng)過初始24小時時段,應(yīng)用程序管理106可請求另一個24小時臨時預(yù)報。此24小時預(yù)報循環(huán)例如繼續(xù)直到移動設(shè)備100關(guān)閉為止。

在一些具體實施中,采樣守護進程102可生成24小時時段的應(yīng)用程序調(diào)用(例如,“bundleId”啟動事件)臨時預(yù)報。例如,采樣守護進程102可將24小時時段劃分為96個15分鐘時隙。采樣守護進程102可基于采樣守護進程102采集并存儲在事件數(shù)據(jù)存儲裝置104中的應(yīng)用程序啟動歷史數(shù)據(jù)(例如,“bundleId”啟動事件數(shù)據(jù))確定已調(diào)用哪些應(yīng)用程序以及在先前運行的許多天(例如,1到7)什么時間調(diào)用這些應(yīng)用程序。

在一些具體實施中,當(dāng)采樣守護進程102生成“bundleId”屬性的臨時預(yù)報時,可根據(jù)(任一)應(yīng)用程序?qū)⒃?5分鐘時隙中被調(diào)用的概率對每個15分鐘時隙進行排位,如在臨時預(yù)報部分中所述。

一旦針對96個時隙中的每一個計算出應(yīng)用程序調(diào)用概率,則采樣守護進程102可選擇具有最大非零概率的許多時隙(例如,至多64)并且將標識該時隙的信息返回到應(yīng)用程序管理器106。例如,采樣守護進程102可向應(yīng)用程序管理器106發(fā)送對應(yīng)于與可能的用戶調(diào)用的應(yīng)用程序啟動(例如,分數(shù)大于0的時隙)對應(yīng)的15分鐘時隙的啟動的時間列表(例如,中午12點、下午1點45分等)。

在一些具體實施中,應(yīng)用程序管理器106可基于采樣守護進程102提供的時隙設(shè)定定時器。例如,應(yīng)用程序管理器106可創(chuàng)建或設(shè)定對應(yīng)于采樣守護進程102標識的時隙的一個或多個定時器(例如,鬧鐘)。當(dāng)每個定時器結(jié)束(例如,在中午12點)時,應(yīng)用程序管理器106可喚醒(例如,如果睡眠、暫停等)并且確定在當(dāng)前15分鐘時隙將啟動哪些應(yīng)用程序。因此,定時器可觸發(fā)對可能在相應(yīng)時隙由用戶調(diào)用的應(yīng)用程序的獲取后臺更新。

在一些具體實施中,其他事件可觸發(fā)應(yīng)用程序的獲取后臺更新。例如,應(yīng)用程序管理器106可向采樣守護進程102注冊對各個事件的興趣。例如,應(yīng)用程序管理器106可注冊對有關(guān)打開蜂窩收音機、基帶處理器或建立網(wǎng)絡(luò)連接(例如,蜂窩或Wi-Fi)的事件的興趣(例如,屬性),從而可通知應(yīng)用程序管理器106這些事件何時發(fā)生并且觸發(fā)后臺應(yīng)用程序啟用使得應(yīng)用程序更新可利用活動網(wǎng)絡(luò)連接的優(yōu)勢。解除移動設(shè)備100的鎖定,打開顯示器和/或其他交互可觸發(fā)后臺應(yīng)用程序啟動和獲取更新,如下文進一步所述。在一些具體實施中,如果在前幾分鐘(例如,7分鐘)內(nèi)執(zhí)行任何后臺更新,則應(yīng)用程序管理器106將不觸發(fā)后臺應(yīng)用程序啟動和獲取更新。

確定啟動哪些應(yīng)用程序-對等預(yù)報

在一些具體實施中,應(yīng)用程序管理器106可請求采樣守護進程102提供當(dāng)前時間啟動的應(yīng)用程序列表。例如,當(dāng)定時器結(jié)束(例如,截止)15分鐘時隙或檢測到觸發(fā)事件時,應(yīng)用程序管理器可從采樣守護進程102請求“bundleId”屬性的對等預(yù)報使得采樣守護進程102可確定當(dāng)前時隙啟動哪些應(yīng)用程序。采樣守護進程102隨后可生成包括應(yīng)用程序標識符列表以及指示每個應(yīng)用程序在大約當(dāng)前時間將由用戶調(diào)用的概率的相應(yīng)分數(shù)的對等預(yù)報。

圖5示出了用于針對移動設(shè)備100上的應(yīng)用程序確定用戶調(diào)用概率的對等預(yù)報。例如,圖示500示出了最近歷史窗口規(guī)范的對等預(yù)報(例如,先前2小時)。圖示530示出了每日歷史窗口規(guī)范的對等預(yù)報(例如,先前7天中每天4小時框)。圖示560示出了每周歷史窗口規(guī)范的對等預(yù)報(例如,4小時框,每7天一次)。在一些具體實施中,采樣守護進程102可使用不同重疊窗口規(guī)范的對等預(yù)報執(zhí)行時序建模以確定移動設(shè)備100上的應(yīng)用程序的用戶調(diào)用概率。如果應(yīng)用程序未在對等預(yù)報中出現(xiàn),則應(yīng)用程序可被分配零概率值。

在一些具體實施中,可通過生成不同時間窗口的對等預(yù)報執(zhí)行時序建模。例如,基于最近、每天和每周事件歷史窗口規(guī)范可生成最近、每天和每周對等預(yù)報。隨后可結(jié)合最近、每日和每周對等預(yù)報來確定在當(dāng)前時間啟動哪些應(yīng)用程序,如下文進一步所述。

在一些具體實施中,可基于最近應(yīng)用程序調(diào)用生成用戶調(diào)用概率。例如,可通過借助指定先前2小時作為感興趣的時間段(例如,用戶在前2小時內(nèi)發(fā)起應(yīng)用程序調(diào)用)的窗口規(guī)范執(zhí)行“bundleId”屬性的對等預(yù)報來生成用戶調(diào)用概率。

如圖示500所示,應(yīng)用程序啟動歷史數(shù)據(jù)(例如,“bundleId”事件數(shù)據(jù))可指示在先前2小時內(nèi)啟動多個(例如,四個)應(yīng)用程序。例如,點和圈可代表應(yīng)用程序,其中空圈可代表單個特定應(yīng)用程序(例如,電子郵件、社交網(wǎng)絡(luò)應(yīng)用程序等)而空圈代表其他應(yīng)用程序的調(diào)用??赏ㄟ^將先前2小時內(nèi)的特定應(yīng)用程序調(diào)用數(shù)量(例如,2個)除以應(yīng)用程序調(diào)用總數(shù)(例如,4個)來計算與使用最近歷史(例如,先前2小時)的特定應(yīng)用程序相關(guān)聯(lián)的對等預(yù)報概率分數(shù)。在所示情況下,與使用最近應(yīng)用程序啟動歷史數(shù)據(jù)的特定應(yīng)用程序相關(guān)聯(lián)的概率為2/4或50%。

可基于應(yīng)用程序啟動的每日歷史(例如,在前七天中每一天的當(dāng)前時間+-2小時啟動哪些應(yīng)用程序)生成用戶調(diào)用概率。例如,可通過針對24小時復(fù)發(fā)頻率(例如,每24小時重復(fù)一次復(fù)發(fā)寬度)指定一天中當(dāng)前時間+-2小時(例如,4小時復(fù)發(fā)寬度)作為感興趣的時間段(例如,用戶在前2小時內(nèi)發(fā)起應(yīng)用程序調(diào)用)的窗口規(guī)范執(zhí)行“bundleId”屬性的對等預(yù)報來生成用戶調(diào)用概率。

圖示530示出可用來確定應(yīng)用程序的用戶調(diào)用概率的應(yīng)用程序啟動(例如,“bundleId”啟動事件)的每日歷史。例如,圖示530中的每個框代表先前幾天(例如,7天)(例如,如在對等預(yù)報的窗口規(guī)范中指定)中每一天中的時間窗口(例如,一天中當(dāng)前時間+-2小時),可分析該時間窗口來確定特定應(yīng)用程序(例如,空圈)的用戶調(diào)用概率(例如,對等預(yù)報分數(shù))??赏ㄟ^將在所有窗口中的特定應(yīng)用程序的調(diào)用數(shù)量(例如,6個)除以在所有窗口中應(yīng)用程序調(diào)用總數(shù)(例如,22個)來計算與使用每日歷史數(shù)據(jù)的特定應(yīng)用程序相關(guān)聯(lián)的概率。在所示情況下,與使用每日啟動歷史數(shù)據(jù)的特定應(yīng)用程序相關(guān)聯(lián)的概率為6/22或27%。

可基于應(yīng)用程序啟動的每周歷史(例如,在前七天之前的當(dāng)前時間+-2小時啟動哪些應(yīng)用程序)生成用戶調(diào)用概率。例如,可通過借助針對7天復(fù)發(fā)頻率(例如,每7天重復(fù)一次復(fù)發(fā)寬度)指定一天中當(dāng)前時間+-2小時(例如,4小時復(fù)發(fā)寬度)作為感興趣的時間段(例如,用戶在前2小時內(nèi)發(fā)起應(yīng)用程序調(diào)用)的窗口規(guī)范執(zhí)行“bundleId”屬性的對等預(yù)報來生成用戶調(diào)用概率。

圖示560示出可用來確定應(yīng)用程序的用戶調(diào)用概率的應(yīng)用程序啟動(例如,“bundleId”啟動事件)的每周歷史。例如,如果當(dāng)前日期和時間為星期三下午1點,應(yīng)用程序的用戶調(diào)用概率(例如,對等預(yù)報分數(shù))可基于在上周三下午1點或大約1點的時間窗口(例如,+-2小時)期間啟動的應(yīng)用程序。在所示情況下,與使用每周應(yīng)用程序啟動歷史數(shù)據(jù)的特定應(yīng)用程序相關(guān)聯(lián)的概率(例如,空圈)為1/4或25%。

在一些具體實施中,可組合最近、每日和每周用戶調(diào)用概率來生成每個應(yīng)用程序的分數(shù)。例如,可通過計算最近(r)、每天(d)和每周(w)概率的加權(quán)平均來組合最近、每天和每周概率。每個概率可具有相關(guān)聯(lián)的權(quán)重并且每個權(quán)重可對應(yīng)于每個概率的按照經(jīng)驗確定的預(yù)定義重要性。所有權(quán)重的和可等于1。例如,基于最近啟動的概率的權(quán)重可為0.6,每日概率的權(quán)重可為0.3而每周概率的權(quán)重可為0.1。因此,組合概率分數(shù)可為0.6(r)、0.3(d)和0.1(w)的和(例如,分數(shù)=0.6r+0.3d+0.1w)。

重新參考圖4,一旦基于最近、每日和每周概率為每個應(yīng)用程序確定概率分數(shù),則采樣守護進程102可向應(yīng)用程序管理器106推薦具有最高非零概率分數(shù)的可配置數(shù)量(例如,三個)應(yīng)用程序用于啟動執(zhí)行后臺獲取下載/更新。

在一些具體實施中,采樣守護進程102可從上述“啟動什么”分析中排除不支持后臺更新(例如,獲取)應(yīng)用程序更新的應(yīng)用程序、用戶關(guān)閉后臺更新的應(yīng)用程序、選擇不進行后臺更新的應(yīng)用程序、和/或哪個應(yīng)用程序當(dāng)前正由用戶使用或位于移動設(shè)備100的顯示器上的前臺,這是因為前臺應(yīng)用程序有可能已經(jīng)更新。

在一些具體實施中,一旦應(yīng)用程序管理器106從采樣守護進程102接收到該推薦的應(yīng)用程序,則應(yīng)用程序管理器106可詢問采樣守護進程102是否可以啟動每個推薦應(yīng)用程序。采樣守護進程102可使用其本地準入控制機制(下文所述)來確定應(yīng)用程序管理器是否可以啟動特定應(yīng)用程序。例如,應(yīng)用程序管理器106可向采樣守護進程102發(fā)送具有標識推薦的應(yīng)用程序之一的屬性值的“bundleId”屬性并且請求采樣守護進程102對屬性值執(zhí)行準入控制。

本地準入控制

在一些具體實施中,采樣守護進程102可針對移動設(shè)備100上的屬性事件執(zhí)行準入控制。例如,可對屬性或?qū)傩灾祱?zhí)行準入控制來確定客戶端應(yīng)用程序是否可執(zhí)行與該屬性相關(guān)聯(lián)的活動、動作、功能、事件等。例如,采樣守護進程102的客戶端可請求對具有“mailapp”值的屬性“bundleId”的準入。響應(yīng)于接收到準入請求,采樣守護進程可確定客戶端是否可執(zhí)行與“mailapp”屬性值相關(guān)聯(lián)的活動(例如,執(zhí)行“mailapp”應(yīng)用程序)。

在一些具體實施中,可基于預(yù)算和投票者的反饋執(zhí)行準入控制。例如,當(dāng)采樣守護進程102接收準入控制請求時,該請求可包括與允許屬性事件(例如,啟動應(yīng)用程序、“bundleId”啟動事件)相關(guān)聯(lián)的成本。采樣守護進程102可檢查跨系統(tǒng)數(shù)據(jù)預(yù)算、跨系統(tǒng)能量預(yù)算和/或特定屬性預(yù)算來確定與該屬性相關(guān)聯(lián)的預(yù)算是否具有足夠的保留信用來涵蓋屬性事件。如果沒有與該屬性相關(guān)聯(lián)的預(yù)算(例如,屬性不是預(yù)算的屬性),則可允許繼續(xù)進行屬性事件(例如,采樣守護進程102將響應(yīng)于準入控制請求返回“確認”值)。如果存在與該屬性相關(guān)聯(lián)的預(yù)算并且在與相關(guān)聯(lián)的預(yù)算中沒有足夠剩余信用來涵蓋事件的成本,則將不允許繼續(xù)進行屬性事件(例如,采樣守護進程102將響應(yīng)于準入控制請求返回“否”值)。

如果存在于該屬性相關(guān)聯(lián)的預(yù)算并且在預(yù)算中存在足夠剩余信用來涵蓋事件的成本,則投票者將被要求投票允許屬性繼續(xù)進行。如果所有投票者投“是”,則將允許繼續(xù)進行屬性事件(例如,采樣守護進程102將響應(yīng)于準入控制請求返回“確認”值)。如果任一投票者投“否”,則將不允許繼續(xù)進行屬性事件(例如,采樣守護進程102將響應(yīng)于準入控制請求返回“否”值)。在以下段落描述有關(guān)預(yù)算和投票者的詳情。

在一些具體實施中,如果屬性或?qū)傩灾滴丛跍嗜肟刂普埱笾皶r間段(例如,7天、一個月等)內(nèi)在事件中報告給采樣守護進程102,則采樣守護進程102可響應(yīng)于準入控制請求返回“從不”值。例如,采樣守護進程102可生成臨時或?qū)Φ阮A(yù)報來確定何時允許或承認與屬性或?qū)傩灾迪嚓P(guān)聯(lián)的事件。例如,不需要先占未預(yù)期發(fā)生的事件(例如,不需要預(yù)先獲取未打算由用戶調(diào)用的應(yīng)用程序的數(shù)據(jù))。

準入控制-預(yù)算

在一些具體實施中,采樣守護進程102可基于與屬性或?qū)傩灾迪嚓P(guān)聯(lián)的預(yù)算執(zhí)行準入控制。例如,采樣守護進程102可基于與屬性或?qū)傩灾迪嚓P(guān)聯(lián)的預(yù)算確定是否允許(例如,承認)與屬性或?qū)傩灾迪嚓P(guān)聯(lián)的活動(例如,事件)。在一些具體實施中,采樣守護進程102可基于針對移動設(shè)備100配置的跨系統(tǒng)能量預(yù)算和/或跨系統(tǒng)數(shù)據(jù)預(yù)算確定是否可以承認屬性或?qū)傩灾?。采樣守護進程102可將預(yù)算存儲在記賬數(shù)據(jù)存儲裝置402中,該記賬數(shù)據(jù)存儲裝置包括用于在當(dāng)前時間段(例如,當(dāng)前小時)保存跟蹤保留的數(shù)據(jù)和能量預(yù)算的計數(shù)器。當(dāng)客戶端請求針對屬性或?qū)傩灾祱?zhí)行準入控制時,客戶端可指定代表允許或承認與屬性或?qū)傩灾迪嚓P(guān)聯(lián)的事件發(fā)生的成本的數(shù)值。如果在預(yù)算中存在與屬性相關(guān)聯(lián)的足夠信用,則屬性事件將由投票者來投票,如下所述。如果在預(yù)算中沒有與屬性相關(guān)聯(lián)的足夠信用,則將不允許屬性事件繼續(xù)進行。

跨系統(tǒng)能量預(yù)算

在一些具體實施中,采樣守護進程102可基于能量預(yù)算確定是否可以承認屬性或?qū)傩灾怠@?,能量預(yù)算可為移動設(shè)備電池容量毫安時的百分比(例如,5%)。

在一些具體實施中,可在24小時內(nèi)每個小時其間分發(fā)能量預(yù)算。例如,采樣守護進程102可利用采集并存儲在事件數(shù)據(jù)存儲裝置104中的電池利用統(tǒng)計值(例如,“system.energy”事件)來確定反映出24小時內(nèi)每個小時的典型歷史電池使用的分布。例如,可基于歷史或統(tǒng)計確定的能量使用分布或應(yīng)用程序使用預(yù)報,為每個小時分配能量預(yù)算的百分比,如上所述。每個小時將具有大于0(例如,0.1%、1%等)的最小量的能量預(yù)算。例如,根據(jù)歷史能量或應(yīng)用程序使用,10%的能量預(yù)算可在未使用數(shù)據(jù)的小時其間分布而保留的90%能量預(yù)算可在活動使用小時其間分布。在每個小時經(jīng)過時,當(dāng)前能量預(yù)算將被新/當(dāng)前小時的能量預(yù)算填充。從先前小時剩下的任何能量預(yù)算將被添加到當(dāng)前小時的預(yù)算。

在一些具體實施中,記賬數(shù)據(jù)存儲裝置402可包括用于確定多少能量預(yù)算保持可用的計數(shù)器。例如,記賬數(shù)據(jù)存儲裝置402可包括利用當(dāng)前小時的能量預(yù)算而被初始化的一個或多個計數(shù)器。當(dāng)屬性事件使用能量預(yù)算時,能量預(yù)算可遞減相應(yīng)量。例如,應(yīng)用程序管理器106可通知采樣守護進程102何時使用“bundleId”啟動或停止事件啟動或終止應(yīng)用程序。反過來,采樣守護進程102可通知電力監(jiān)測器108應(yīng)用程序何時啟動以及應(yīng)用程序何時終止?;趩雍屯V箷r間,電力監(jiān)測器108可確定應(yīng)用程序使用多少能量。電力監(jiān)測器108可將應(yīng)用程序使用的電力量傳輸(例如,通過提交“system.energy”屬性事件)到采樣守護進程102而采樣守護進程102可將適合的計數(shù)器遞減所使用的電力量。

在一些具體實施中,在當(dāng)前小時未保留能量預(yù)算時,采樣守護進程102可拒絕屬性的準入請求。例如,當(dāng)記賬數(shù)據(jù)存儲裝置402中的能量預(yù)算計數(shù)器被遞減到0時,未留下能量預(yù)算并且可能不承認與綁定到能量預(yù)算的屬性相關(guān)聯(lián)的活動、事件等。如果當(dāng)前小時保持足夠能量預(yù)算來涵蓋屬性事件的成本,則采樣守護進程102可響應(yīng)于準入控制請求返回“是”值并且允許屬性事件繼續(xù)進行。

在一些具體實施中,當(dāng)移動設(shè)備100插入到外部電源時,采樣守護進程102不將準入控制決定取決于能量預(yù)算。例如,當(dāng)移動設(shè)備100插入到外部電源時,保留的零能量預(yù)算將不阻止屬性事件。

跨系統(tǒng)數(shù)據(jù)預(yù)算

在一些具體實施中,采樣守護進程102可基于數(shù)據(jù)預(yù)算來確定是否可以承認屬性。例如,采樣守護進程102可基于采樣守護進程102采集并存儲在事件數(shù)據(jù)存儲裝置104中的統(tǒng)計數(shù)據(jù)(例如,“system.networkBytes”屬性事件)確定移動設(shè)備100消耗的網(wǎng)絡(luò)數(shù)據(jù)的平均量。網(wǎng)絡(luò)數(shù)據(jù)預(yù)算可計算為用戶/移動設(shè)備100消耗的平均每日網(wǎng)絡(luò)數(shù)據(jù)的百分比。另選地,網(wǎng)絡(luò)數(shù)據(jù)預(yù)算可為預(yù)定義或可配置的值。

在一些具體實施中,可在24小時內(nèi)每個小時其間分發(fā)網(wǎng)絡(luò)數(shù)據(jù)預(yù)算。例如,每小時可分配最小預(yù)算(例如,0.2MB)。可根據(jù)歷史網(wǎng)絡(luò)數(shù)據(jù)使用在24小時每個小時其間分發(fā)保留量的網(wǎng)絡(luò)數(shù)據(jù)預(yù)算。例如,采樣守護進程102可基于歷史統(tǒng)計數(shù)據(jù)(例如,“system.networkBytes”屬性值)確定在一天中的每個小時消耗多少網(wǎng)絡(luò)數(shù)據(jù)并且根據(jù)每小時中消耗的數(shù)據(jù)量分配百分比。在每個小時經(jīng)過時,當(dāng)前數(shù)據(jù)預(yù)算將被新/當(dāng)前小時的數(shù)據(jù)預(yù)算填充。從先前小時剩下的任何能量預(yù)算可被添加到當(dāng)前小時的數(shù)據(jù)預(yù)算。

在一些具體實施中,記賬數(shù)據(jù)存儲裝置402可為網(wǎng)絡(luò)數(shù)據(jù)預(yù)算保持數(shù)據(jù)計數(shù)器。在消耗網(wǎng)絡(luò)數(shù)據(jù)時,數(shù)據(jù)計數(shù)器可根據(jù)網(wǎng)絡(luò)數(shù)據(jù)消耗的量遞減。例如,消耗的網(wǎng)絡(luò)數(shù)據(jù)的量可基于應(yīng)用程序管理器106提供給采樣守護進程102的應(yīng)用程序啟動和停止事件(例如,“bundleId”啟動或停止事件)來確定。另選地,網(wǎng)絡(luò)數(shù)據(jù)消耗的量可由管理網(wǎng)絡(luò)界面的進程(例如,網(wǎng)絡(luò)守護進程406、后臺傳輸守護進程1302)來提供。例如,網(wǎng)絡(luò)界面管理進程可將可能與應(yīng)用程序啟動和停止事件(例如,“bundleId”事件)相關(guān)的“system.networkByte”事件報告給采樣守護進程102來確定應(yīng)用程序消耗多少數(shù)據(jù)。

在一些具體實施中,采樣守護進程102可保持跟蹤使用哪種網(wǎng)絡(luò)界面類型(例如,蜂窩或Wi-Fi)消耗網(wǎng)絡(luò)數(shù)據(jù)并且基于網(wǎng)絡(luò)界面類型確定網(wǎng)絡(luò)數(shù)據(jù)消耗的量??筛鶕?jù)分配給每個界面類型的權(quán)重或系數(shù)調(diào)整網(wǎng)絡(luò)數(shù)據(jù)消耗的量。例如,在蜂窩數(shù)據(jù)界面上消耗的網(wǎng)絡(luò)數(shù)據(jù)可分配系數(shù)一(1)。在Wi-Fi界面上消耗的網(wǎng)絡(luò)數(shù)據(jù)可分配系數(shù)十分之一(0.1)。可通過將消耗的蜂窩數(shù)據(jù)添加到消耗的Wi-Fi數(shù)據(jù)除以十來計算消耗的總網(wǎng)絡(luò)數(shù)據(jù)(例如,總數(shù)據(jù)=1*蜂窩數(shù)據(jù)+0.1*Wi-Fi)。因此,在Wi-Fi上消耗的數(shù)據(jù)對數(shù)據(jù)預(yù)算的影響將遠小于在蜂窩數(shù)據(jù)連接上消耗的數(shù)據(jù)。

在一些具體實施中,在當(dāng)前小時未保留數(shù)據(jù)預(yù)算時,采樣守護進程102可對準入控制請求回應(yīng)“否”答復(fù)。例如,當(dāng)記賬數(shù)據(jù)存儲裝置402中的數(shù)據(jù)預(yù)算計數(shù)器被遞減到0時,未留下數(shù)據(jù)預(yù)算并且將不允許與綁定到數(shù)據(jù)預(yù)算的屬性相關(guān)聯(lián)的活動。如果在當(dāng)前小時內(nèi)存在足夠的保留數(shù)據(jù)預(yù)算來涵蓋屬性事件的數(shù)據(jù)成本,則采樣守護進程102可對準入控制請求回應(yīng)“是”答復(fù)。

屬性預(yù)算

在一些具體實施中,屬性可與預(yù)算相關(guān)聯(lián)。例如,預(yù)定義屬性或定制(動態(tài)定義)屬性可通過采樣守護進程102的API與預(yù)算相關(guān)聯(lián)。采樣守護進程102的客戶端(例如,應(yīng)用程序、實體、功能、第三方應(yīng)用程序等)可向采樣守護進程102請求將屬性與客戶端定制預(yù)算相關(guān)聯(lián)。預(yù)算例如可以為許多信用。

一旦分配預(yù)算,則與預(yù)算屬性相關(guān)聯(lián)的報告事件可指示與事件相關(guān)聯(lián)的成本并且預(yù)算可根據(jù)指定成本遞減。例如,預(yù)定義系統(tǒng)屬性“system.btlescan”可配置在移動設(shè)備100上來指示移動設(shè)備100何時執(zhí)行對來自其他藍牙低功耗設(shè)備的信號的掃描。藍牙LE掃描例如可作為后臺任務(wù)運行。藍牙LE掃描要求藍牙廣播打開,繼而藍牙廣播消耗來自移動設(shè)備100的電池的能量。為了避免藍牙LE消耗過多能量,“btlescan”屬性可被分配預(yù)算(例如,24個信用)。每次“btlescan”事件生成并且報告給采樣守護進程102時,該事件可被報告具有成本(例如,1)。成本可從預(yù)算中減去使得每次在事件中報告“btlescan”屬性時,預(yù)算24遞減1。

在一些具體實施中,可在一時間段內(nèi)分發(fā)屬性預(yù)算。例如,“btlescan”屬性預(yù)算可在24小時時間段內(nèi)均勻分發(fā)使得“btlescan”屬性每小時僅花費1個信用。在一些具體實施中,可在一時間段結(jié)束填充屬性預(yù)算。例如,如果“btlescan”屬性預(yù)算的時間段為24小時,則“btlescan”屬性預(yù)算可每24小時被填充。

在一些具體實施中,與屬性相關(guān)聯(lián)的預(yù)算可為另一預(yù)算的子組(例如,子預(yù)算)。例如,屬性的預(yù)算可被指定為另一預(yù)算的一部分,諸如上述的跨系統(tǒng)數(shù)據(jù)或跨系統(tǒng)能量預(yù)算。例如,“mailapp.mailbox”屬性可與等于為系統(tǒng)分配5%數(shù)據(jù)預(yù)算的預(yù)算相關(guān)聯(lián)?!癰tlescan”屬性可與等于為系統(tǒng)分配3%能量預(yù)算的預(yù)算相關(guān)聯(lián)。子預(yù)算(例如,“mailbox”預(yù)算)可綁定到超預(yù)算(例如,系統(tǒng)數(shù)據(jù)預(yù)算)使得對子預(yù)算的遞減也遞減超預(yù)算。在一些具體實施中,如果超預(yù)算減小到0,則子預(yù)算也減小到0。例如,如果系統(tǒng)數(shù)據(jù)預(yù)算為0,則即使針對“mailbox”屬性沒有報告將遞減“mailbox”屬性預(yù)算的事件,“mailbox”屬性預(yù)算也將為0。

在一些具體實施中,采樣守護進程102客戶端可請求采樣守護進程102返回屬性剩余的預(yù)算量。例如,客戶端可向采樣守護進程102請求針對“btlescan”屬性保留的預(yù)算。如果已經(jīng)使用24個預(yù)算信用中的3個,則采樣守護進程102可將值21返回到請求客戶端。

在一些具體實施中,客戶端可在相關(guān)聯(lián)的屬性的預(yù)算沒有信用時報告花費指定數(shù)量的預(yù)算信用的事件。當(dāng)采樣守護進程102在預(yù)算中未保留信用時接收花費1信用的事件(例如,“btlescan”事件)時,采樣守護進程102可遞減預(yù)算(例如,-1)并且向客戶端返回報告報告該事件的錯誤。錯誤例如可指示屬性沒有保留的預(yù)算。

屬性預(yù)算成形

在一些具體實施中,可基于歷史使用信息分發(fā)屬性預(yù)算。例如,在報告預(yù)算屬性的事件時,可隨時間跟蹤使用屬性的預(yù)算的請求(例如,與成本相關(guān)聯(lián)的事件)。如果例如為“btlescan”屬性分配預(yù)算24,則該預(yù)算最初可在24小時時間段上均勻分配,如上所述。當(dāng)隨時間報告與預(yù)算相關(guān)聯(lián)的屬性的事件時,采樣守護進程102可分析報告的事件來確定在24小時時間段內(nèi)事件何時最有可能發(fā)生。例如,采樣守護進程102可確定“btlescan”事件經(jīng)常發(fā)生在大約早上8點、中午12點和晚上6點而幾乎不發(fā)生在大約凌晨2點。采樣守護進程102可使用該事件頻率信息形成24小時時間段上“btlescan”屬性預(yù)算的分發(fā)。例如,采樣守護進程可為對應(yīng)于上午8點、中午12點和晚上6點的每個時隙分配兩個預(yù)算信用,而為與凌晨2點相關(guān)聯(lián)的時隙分配0預(yù)算信用。

準入控制-投票者

在一些具體實施中,采樣守護進程102可基于來自移動設(shè)備100上運行的其他軟件(例如,插件、實體、應(yīng)用程序、啟發(fā)式進程)的反饋執(zhí)行準入控制。例如,其他軟件可配置為與采樣守護進程102一起作為準入控制的投票者工作。例如,幾個投票者(例如,應(yīng)用程序、實體、守護進程、啟發(fā)式進程等)可向采樣守護進程102注冊來對準入控制決定投票。例如,采樣守護進程102可配置為與監(jiān)測移動設(shè)備100的熱狀況的投票者、監(jiān)測移動設(shè)備100的CPU使用的投票者和/或監(jiān)測移動設(shè)備100的電池電力水平的投票者進行交互。當(dāng)采樣守護進程102接收準入控制請求時,每個投票者(例如,熱、CPU和電池)可被要求對是否將允許與指定屬性相關(guān)聯(lián)的活動進行投票。當(dāng)所有投票者投出“是”時,該屬性將得到批準(例如,將允許與屬性相關(guān)聯(lián)的活動發(fā)生)。當(dāng)單個投票者投出“否”時,該屬性將未得到批準(例如,將不允許與屬性相關(guān)聯(lián)的活動)。在一些具體實施中,投票者可被配置為可動態(tài)(例如,在運行時)添加到采樣守護進程102插件軟件以為準入控制系統(tǒng)提供額外功能。在一些具體實施中,投票者可在確定是否許可或允許與屬性或?qū)傩灾迪嚓P(guān)聯(lián)的事件時使用上述的臨時和對等預(yù)報機制。

網(wǎng)絡(luò)守護進程

在一些具體實施中,網(wǎng)絡(luò)守護進程406可被配置為準入控制投票者。網(wǎng)絡(luò)守護進程406可被配置為使用采樣守護進程102的投票API,該投票API允許網(wǎng)絡(luò)守護進程406從采樣守護進程102接收投票請求并且向采樣守護進程102提供投票(例如,是、否)應(yīng)答。例如,網(wǎng)絡(luò)守護進程406可從采樣守護進程102接收包括屬性和/或?qū)傩灾档耐镀闭埱?。網(wǎng)絡(luò)守護進程406可指示例如當(dāng)移動設(shè)備100連接到語音呼叫而未連接到Wi-Fi網(wǎng)絡(luò)連接時采樣守護進程102將不承認或允許與屬性或?qū)傩灾迪嚓P(guān)聯(lián)的事件。例如,為了防止后臺更新進程(例如,獲取進程)干擾語音呼叫或者降低語音呼叫的質(zhì)量,網(wǎng)絡(luò)守護進程406在用戶連接到語音呼叫而未連接到Wi-Fi連接時將不允許與啟動后臺更新進程相關(guān)聯(lián)的事件(例如,“bundleId”啟動事件)。因此,網(wǎng)絡(luò)守護進程406可在移動設(shè)備100連接到呼叫而未連接到Wi-Fi時響應(yīng)于投票請求返回“否”值。

在一些具體實施中,網(wǎng)絡(luò)守護進程406可在移動設(shè)備100具有質(zhì)量不佳蜂窩網(wǎng)絡(luò)連接時指示采樣守護進程102將不允許或承認屬性事件。可在傳輸率和/或吞吐量低于預(yù)定義閾值時確定質(zhì)量不佳蜂窩連接。例如,如果移動設(shè)備100具有質(zhì)量不佳蜂窩網(wǎng)絡(luò)連接并且未連接到Wi-Fi,則網(wǎng)絡(luò)守護進程406可通過在采樣守護進程102web作出投票者請求時返回“否”值防止屬性事件的準入或執(zhí)行,該屬性事件通過利用質(zhì)量不佳網(wǎng)絡(luò)連接(例如,啟動將嘗試通過不佳蜂窩連接下載或上載數(shù)據(jù)的應(yīng)用程序)會浪費電池能量和蜂窩數(shù)據(jù)。

在一些具體實施中,當(dāng)網(wǎng)絡(luò)守護進程406沒有指示不佳網(wǎng)絡(luò)連接的信息或者將影響網(wǎng)絡(luò)數(shù)據(jù)使用或系統(tǒng)性能的一些其他狀況時,網(wǎng)絡(luò)守護進程406可對請求的屬性的準入投出“是”。

熱守護進程

在一些具體實施中,熱守護進程110應(yīng)用程序可被配置為準入控制投票者。熱守護進程110可被配置為使用采樣守護進程102的投票API,該投票API允許熱守護進程110從采樣守護進程102接收投票請求并且向采樣守護進程102提供投票(例如,是、否)應(yīng)答。例如,熱守護進程可從采樣守護進程102接收包括屬性和/或?qū)傩灾档耐镀闭埱?。熱守護進程110可指示當(dāng)熱守護進程110檢測到熱事件時采樣守護進程102將不承認或允許與屬性或?qū)傩灾迪嚓P(guān)聯(lián)的事件。例如,熱守護進程110可監(jiān)測移動設(shè)備100的溫度并且通過生成包括“thermalLevel”屬性和溫度值的事件來將對應(yīng)溫度值報告給采樣守護進程102。

在一些具體實施中,當(dāng)熱守護進程110確定移動設(shè)備100的溫度大于閾值溫度值時,熱守護進程110可通過在采樣守護進程102向熱守護進程110發(fā)送請求對屬性(例如,“bundleId”)事件投票時返回“否”值,防止熱守護進程102允許可能提高移動設(shè)備100的工作溫度的屬性事件。

在一些具體實施中,采樣守護進程102在當(dāng)前存在異常熱狀況時將僅向熱守護進程110要求投票。例如,采樣守護進程102可保持熱狀況值(例如,真,假),該熱狀況值指示移動設(shè)備100是否工作在正常熱狀況。例如,如果移動設(shè)備100的當(dāng)前熱狀況正常,則熱狀況值可為真。如果移動設(shè)備100的當(dāng)前熱狀況異常(例如,過熱、大于閾值溫度),則熱狀況值可為假。初始,熱狀況值可被設(shè)為真(例如,正常工作溫度)。在檢測到工作溫度上升高于閾值溫度時,熱守護進程110可向采樣守護進程102發(fā)送指示異常工作溫度(例如,假)的熱狀況值的更新值。一旦移動設(shè)備100冷卻到低于閾值溫度的溫度,熱守護進程110可更新熱狀況值以指示正常工作溫度(例如,真)。

當(dāng)采樣守護進程102接收屬性的準入控制請求時,采樣守護進程102可檢查熱狀況值以確定是否詢問熱守護進程110對屬性事件的準入(允許)投票。如果熱狀況值指示正常工作溫度(例如,值為真),則采樣守護進程102將熱狀況值解釋為來自熱守護進程110的“真”投票。

如果熱狀況值指示異常工作溫度(例如,值為假),則采樣守護進程102將向熱守護進程110發(fā)送屬性和/或?qū)傩灾狄栽试S熱守護進程110對特性屬性或?qū)傩灾低镀薄?/p>

在一些具體實施中,熱守護進程110可基于移動設(shè)備100的當(dāng)前熱狀況和屬性的對等預(yù)報確定如何對屬性和/或?qū)傩灾低镀?例如,是,否)。例如,熱守護進程110可向采樣守護進程102請求屬性的對等預(yù)報。熱守護進程110可通過生成包括感興趣的時間段中的當(dāng)前時間(例如,+-1小時、2小時等)的窗口規(guī)范請求對當(dāng)前時間的對等預(yù)報。熱守護進程110將從采樣守護進程102接收指示每個屬性值的出現(xiàn)在感興趣的時間段的可能性分數(shù)的對等預(yù)報。例如,如果熱守護進程110請求“bundleId”屬性的對等預(yù)報,則熱守護進程110可接收“bundleId”值列表(例如,應(yīng)用程序標識符)以及相關(guān)聯(lián)的預(yù)報(例如,概率、可能性)分數(shù)。例如,如果在感興趣的時間段期間,具有屬性值“郵件應(yīng)用程序”、“聯(lián)系人”、“日歷”、“web瀏覽器”、“郵件應(yīng)用程序”、“web瀏覽器”、“郵件應(yīng)用程序”的“bundleId”事件發(fā)生,則“郵件應(yīng)用程序”發(fā)生的相對可能性(即,分數(shù))為0.43(例如,3/7),“web瀏覽器”發(fā)生的相對可能性為0.29(例如,2/7)以及“聯(lián)系人”或“日歷”發(fā)生的相對可能性為0.14(例如,1/7)。在一些具體實施中,熱守護進程110可根據(jù)分數(shù)(例如,頂部的最高分數(shù)、底部的最低分數(shù))對屬性值列表排序。例如,針對上述“bundleId”屬性值的排序列表從上到下為:“郵件應(yīng)用程序”、“web瀏覽器”、“聯(lián)系人”和“日歷”。

在一些具體實施中,熱守護進程110可基于屬性值在排序列表中所處的位置確定何時對屬性值投出“是”表決。例如,如果熱守護進程110在考慮的屬性值不在從采樣守護進程102接收到的對等預(yù)報列表中,則屬性值將從熱守護進程110接收“否”表決。如果屬性值在對等預(yù)報列表中并且低于列表中的閾值水平(例如,索引)(例如,基于分數(shù)位于屬性的底部25%中),則熱守護進程110將對屬性投“否”表決。如果屬性值在對等預(yù)報列表中并且高于列表中的閾值水平(例如,基于分數(shù)位于屬性的頂部75%中),則熱守護進程110將對屬性投“是”表決。一旦確定表決,則熱守護進程110將“是”(例如,真)或“否”(例如,假)表決返回到采樣守護進程102。

在一些具體實施中,熱守護進程110可配置有最大閾值水平以避免對所有屬性值投“否”表決(例如,使得一些屬性事件將發(fā)生)。最大閾值水平可為排序的對等預(yù)報列表中屬性值的50%(例如,頂部50%得到“是”表決,底部50%得到“否”表決)。因此,熱守護進程110可調(diào)整閾值水平,該閾值水平從具有最低分數(shù)的屬性值的0%到50%將接收到“是”表決的屬性值與將接收到“否”表決的屬性值分隔開。

在一些具體實施中,用于確定“是”或“否”表決的閾值水平可與移動設(shè)備100的熱水平(例如,溫度)成比例。例如,熱守護進程110可配置有最大工作熱水平(Lh)和正常工作水平(Ln)。熱守護進程110可確定當(dāng)前工作熱水平(Lc)以及確定移動設(shè)備100當(dāng)前工作(例如,Lc-Ln/Lh-Ln=%)為熱范圍(例如,Lh-Ln)的百分比。熱守護進程110可使用計算出的百分比確定0-50%屬性值的什么部分將接收到“否”表決。例如,如果當(dāng)前工作熱水平計算為熱范圍的65%,則對等預(yù)報分數(shù)的屬性值的底部32.5%將從熱守護進程110接收到“否”表決。因此,最不重要的屬性值將接收到“否”表決而最重要的屬性值將接收到“是”表決。返回參考以上“bundleId”示例,如果針對上述“bundleId”屬性值的排序列表從上到下為:“郵件應(yīng)用程序”、“web瀏覽器”、“聯(lián)系人”和“日歷”,則“日歷”將接收到“否”表決而“郵件應(yīng)用程序”、“web瀏覽器”和“聯(lián)系人”將接收到“是”表決(例如,“郵件應(yīng)用程序”、“web瀏覽器”和“聯(lián)系人”為使用最多的應(yīng)用程序)。例如,如果應(yīng)用程序管理器106對“bundleId”屬性web作出準入控制請求來確定啟動哪些應(yīng)用程序,則將啟動“郵件應(yīng)用程序”、“web瀏覽器”和“聯(lián)系人”應(yīng)用程序而將不啟動“日歷”應(yīng)用程序。

作為另一示例,熱守護進程110可被要求對“mailapp.mailbox”屬性投票表決??缮蓪Α癿ailapp.mailbox”屬性值的對等預(yù)報,該屬性值產(chǎn)生指示最頻繁訪問的文件夾到最少頻次訪問的文件夾的郵件文件夾排列列表(例如,“收件箱”、“個人”、“工作”、“家庭”、“垃圾郵件”和“垃圾箱”)。如果屬性值的底部32.5%接收到“否”表決,則“垃圾郵件”和“垃圾箱”將接收到“否”表決。例如,如果“郵箱”應(yīng)用程序?qū)Α癿ailapp.mailbox”屬性值web作出準入控制請求來確定從哪些文件夾獲取郵件,則“mailapp”應(yīng)用程序?qū)@取“收件箱”、“工作”和“家庭”文件夾的郵箱而不獲取“垃圾郵件”和“垃圾箱”文件夾的郵件。在一些具體實施中,當(dāng)采樣守護進程102保持的熱狀態(tài)值被復(fù)位來指示正常工作溫度(例如,真值)時可通知已從熱守護進程110接收到“否”表決的屬性或?qū)傩灾怠@?,采樣守護進程102可存儲標識客戶端、已接收到“否”表決的屬性和屬性值的數(shù)據(jù)。在從熱守護進程110接收到更新的熱狀態(tài)值(例如,真)時,采樣守護進程102可向接收到“否”表決的客戶端發(fā)送通知以提示客戶端嘗試對先前拒絕的屬性或?qū)傩灾档牧硪粶嗜肟刂普埱?。在一些具體實施中,客戶端可重新發(fā)送準入控制請求而無需來自采樣守護進程102提示。例如,客戶端可具有使得客戶端在時間段截止之后重試準入控制請求的內(nèi)部定時器。

活動監(jiān)測器

在一些具體實施中,活動監(jiān)測器應(yīng)用程序408可被配置為準入控制投票者?;顒颖O(jiān)測器408可被配置為使用采樣守護進程102的投票API,該投票API允許活動監(jiān)測器408從采樣守護進程102接收投票請求并且向采樣守護進程102提供投票(例如,是、否)應(yīng)答。例如,活動監(jiān)測器408可從采樣守護進程102接收包括屬性和/或?qū)傩灾档耐镀闭埱?。活動監(jiān)測器408可指示例如當(dāng)移動設(shè)備100使用大于存儲器資源或CPU資源的閾值量(例如,90%)時采樣守護進程102將不承認或允許與屬性或?qū)傩灾迪嚓P(guān)聯(lián)的事件。例如,如果移動設(shè)備100已運行使用移動設(shè)備100的大多數(shù)存儲器資源或CPU資源的許多應(yīng)用程序或進程,則通過用光剩余的存儲器資源在后臺啟動另外的應(yīng)用程序?qū)⒂锌赡芙档鸵苿釉O(shè)備100的性能。因此,當(dāng)活動監(jiān)測器408確定存儲器或CPU使用超過閾值(例如,75%)時,活動監(jiān)測器408可在采樣守護進程102發(fā)送對“bundleId”屬性事件投票的請求時返回“否”值防止應(yīng)用程序管理器106啟動另外的應(yīng)用程序。如果活動監(jiān)測器408確定移動設(shè)備100的存儲器和/或CPU資源低于閾值使用量,則活動監(jiān)測器408可響應(yīng)于來自采樣守護進程102的投票請求返回“是”值。

啟動后臺獲取應(yīng)用程序

在一些具體實施中,當(dāng)應(yīng)用程序管理器106向采樣守護進程102web作出準入控制請求并接收到“是”回復(fù)時,應(yīng)用程序管理器106可在移動設(shè)備100的工作環(huán)境的后臺調(diào)用或啟動所識別的應(yīng)用程序(例如,如“bundleId”屬性值所識別的,應(yīng)用程序108)。例如,應(yīng)用程序108可在后臺啟動使得對用戶來說應(yīng)用程序108被啟動并不明顯。應(yīng)用程序108隨后可通過網(wǎng)絡(luò)(例如,互聯(lián)網(wǎng))與內(nèi)容服務(wù)器404通信以下載更新的內(nèi)容顯示給用戶。因此,當(dāng)用戶隨后選擇應(yīng)用程序108(例如,使得應(yīng)用程序進入前臺)時,用戶將被呈現(xiàn)當(dāng)前更新的內(nèi)容而不必等待應(yīng)用程序108從服務(wù)器404下載內(nèi)容以及刷新應(yīng)用程序用戶界面。

在一些具體實施中,應(yīng)用程序管理器106可被配置為當(dāng)移動設(shè)備100充電以及連接到Wi-Fi時啟動支持后臺獲取的應(yīng)用程序。例如,采樣守護進程102可確定移動設(shè)備100何時連接到外部電源(例如,基于“cablePlugin”屬性事件)以及通過Wi-Fi(例如,接收的事件)連接到網(wǎng)絡(luò)(例如,互聯(lián)網(wǎng))以及向應(yīng)用程序管理器106發(fā)送信號使得應(yīng)用程序管理器106啟動已在先前時間量(例如,七天)內(nèi)使用的支持獲取的應(yīng)用程序。

示例性后臺獲取進程

圖6是用于預(yù)測性地啟動應(yīng)用程序來執(zhí)行后臺更新的示例性進程600的流程圖。例如,進程600可由應(yīng)用程序管理器106和采樣守護進程102執(zhí)行來確定何時啟動配置為從網(wǎng)絡(luò)資源,諸如圖4的內(nèi)容服務(wù)器404獲取數(shù)據(jù)更新的后臺應(yīng)用程序。可參考以上的圖4和圖5得到與進程600的步驟有關(guān)的另外描述。

在步驟602處,應(yīng)用程序管理器106可從采樣守護進程102接收應(yīng)用程序調(diào)用預(yù)報。例如,應(yīng)用程序管理器106可在移動設(shè)備100的啟動期間被啟動。在其初始化期間,應(yīng)用程序管理器106可在接下來的24小時時間段請求對移動設(shè)備100的用戶有可能調(diào)用的應(yīng)用程序的預(yù)報。例如,應(yīng)用程序管理器106可請求屬性“bundleId”的臨時預(yù)報。該預(yù)報可指示何時啟動應(yīng)用程序。例如,24小時時間段可被劃分為多個15分鐘塊并且每個15分鐘塊可與用戶將在15分鐘塊期間將調(diào)用應(yīng)用程序的概率相關(guān)聯(lián)。在用戶有可能調(diào)用應(yīng)用程序時,返回到應(yīng)用程序管理器106的預(yù)報可識別至多64個15分鐘時間塊。

在步驟604處,應(yīng)用程序管理器106可基于應(yīng)用程序啟動預(yù)報設(shè)定定時器。例如,應(yīng)用程序管理器106可為在返回到應(yīng)用程序管理器106的應(yīng)用程序啟動預(yù)報中由采樣守護進程102識別的15分鐘塊的每一個設(shè)定定時器或鬧鐘。

在步驟606處,應(yīng)用程序管理器106可請求采樣守護進程102識別啟動哪些應(yīng)用程序。例如,當(dāng)定時器截止或鬧鐘停止時,如果應(yīng)用程序管理器睡眠或暫停時可喚醒,并且從采樣守護進程102請求針對當(dāng)前15分鐘時間塊要啟動的應(yīng)用程序列表。采樣守護進程102可返回應(yīng)在移動設(shè)備100上的后臺啟動的應(yīng)用程序列表。例如,應(yīng)用程序管理器106可請求對屬性“bundleId”的對等預(yù)報。對等預(yù)報可指示“bundleId”屬性中哪些值最有可能在當(dāng)前15分鐘時隙中被報告(例如,哪些應(yīng)用程序最有可能被用戶調(diào)用)。

在步驟607處,應(yīng)用程序管理器106可向采樣守護進程102發(fā)送請求詢問是否可以啟動應(yīng)用程序。例如,針對響應(yīng)于“bundleId”對等預(yù)報請求采樣守護進程102識別的每個應(yīng)用程序,應(yīng)用程序管理器106可詢問采樣守護進程102是否可以啟動應(yīng)用程序。例如,應(yīng)用程序管理器106可請求采樣守護進程102對“bundleId”屬性的特定值執(zhí)行準入控制,該“bundleId”屬性對應(yīng)于應(yīng)用程序管理器106正嘗試啟動的應(yīng)用程序。如果可以啟動應(yīng)用程序,采樣守護進程102從準入控制請求返回“是”,如果不確認啟動應(yīng)用程序則返回“否”,或者如果從未確認啟動應(yīng)用程序則返回“從未”。

在步驟610處,應(yīng)用程序管理器106可啟動應(yīng)用程序。例如,如果采樣守護進程102返回對準入控制請求的“確認”(例如,確認、是、真等等)應(yīng)答,則應(yīng)用程序管理器106將作為移動設(shè)備100的后臺進程啟動應(yīng)用程序。如果采樣守護進程102返回對準入控制請求的“否”或“從未”應(yīng)答,則應(yīng)用程序管理器106將不啟動應(yīng)用程序。

在步驟612處,應(yīng)用程序管理器106可將應(yīng)用程序啟動通知傳輸?shù)讲蓸邮刈o進程102。例如,應(yīng)用程序管理器106可將“bundleId”啟動事件傳輸?shù)讲蓸邮刈o進程102來記錄對啟動的應(yīng)用程序的執(zhí)行。

在步驟614處,應(yīng)用程序管理器106可檢測到啟動的應(yīng)用程序已終止。例如,應(yīng)用程序管理器106可確定啟動的應(yīng)用程序不再在移動設(shè)備100上運行。

在步驟616處,應(yīng)用程序管理器106可將應(yīng)用程序終止通知傳輸?shù)讲蓸邮刈o進程102。例如,應(yīng)用程序管理器106可將“bundleId”結(jié)束事件傳輸?shù)讲蓸邮刈o進程102來記錄對應(yīng)用程序的終止。

圖7是用于確定何時啟動移動設(shè)備100上的應(yīng)用程序的示例性進程700的流程圖。例如,進程700可用來基于應(yīng)用程序使用統(tǒng)計值(例如,“bundleId”屬性事件數(shù)據(jù))、數(shù)據(jù)和能量預(yù)算、以及移動設(shè)備工作和環(huán)境狀況確定何時啟動應(yīng)用程序、將啟動哪些應(yīng)用程序以及是否可以啟動應(yīng)用程序,如參考圖4在上文詳述。

在步驟702處,采樣守護進程102可從應(yīng)用程序管理器106接收應(yīng)用程序啟動預(yù)報請求。例如,應(yīng)用程序管理器106可向采樣守護進程102請求接下來24小時“bundleId”屬性的臨時預(yù)報。一旦經(jīng)過24小時時間段,應(yīng)用程序管理器106可請求隨后的24小時時間段的“bundleId”屬性的臨時預(yù)報。例如,應(yīng)用程序管理器106可每24小時請求“bundleId”屬性的臨時預(yù)報。

在步驟704處,采樣守護進程102可確定應(yīng)用程序啟動預(yù)報。例如,應(yīng)用程序啟動預(yù)報(例如,“bundleId”屬性的臨時預(yù)報)可用來預(yù)測在24小時時間段內(nèi)有可能在何時發(fā)生用戶發(fā)起的應(yīng)用程序啟動。24小時時間段可被劃分為15分鐘時間塊。對于每個15分鐘時間塊(例如,24小時時間段有96個15分鐘時間塊),采樣守護進程102可使用歷史用戶調(diào)用統(tǒng)計值(例如,“bundleId”啟動事件)來確定在15分鐘時間塊內(nèi)用戶發(fā)起的應(yīng)用程序啟動將發(fā)生的概率,如上文參考圖4所述。

在步驟706處,采樣守護進程102可將應(yīng)用程序啟動預(yù)報傳輸?shù)綉?yīng)用程序管理器106。例如,采樣守護進程102可選擇至多64個用戶發(fā)起的應(yīng)用程序啟動的最高非零概率的15分鐘時間塊。所選的15分鐘時間塊中的每一個可由15分鐘時間塊的啟動時間標識(例如,12:45pm)。采樣守護進程102可向應(yīng)用程序管理器106發(fā)送15分鐘時間塊標識符列表作為應(yīng)用程序啟動預(yù)報(例如,“bundleId”屬性的臨時預(yù)報)。

在步驟708處,采樣守護進程102可接收當(dāng)前時間啟動哪些應(yīng)用程序的請求。例如,應(yīng)用程序管理器106可向采樣守護進程102發(fā)送請求用于采樣守護進程102確定在當(dāng)前時間或大約在當(dāng)前時間將啟動哪些應(yīng)用程序。例如,請求可為當(dāng)前15分鐘時隙的“bundleId”屬性的對等預(yù)報的請求。

在步驟710處,采樣守護進程102可基于歷史事件數(shù)據(jù)為當(dāng)前時間的應(yīng)用程序打分。采樣守護進程102可基于采樣守護進程102采集的歷史用戶發(fā)起的應(yīng)用程序啟動數(shù)據(jù)(例如,“bundleId”屬性啟動事件數(shù)據(jù))確定在不久的將來用戶有可能啟動哪些應(yīng)用程序。采樣守護進程102可基于用戶將在當(dāng)前時間或大約當(dāng)前時間調(diào)用應(yīng)用程序的歷史可能性利用最近應(yīng)用程序啟動數(shù)據(jù)、每日應(yīng)用程序啟動數(shù)據(jù)和/或每周應(yīng)用程序啟動數(shù)據(jù)來為應(yīng)用程序打分,如上文參考圖4和圖5所述。

在步驟712處,采樣守護進程102可將應(yīng)用程序和應(yīng)用程序分數(shù)傳輸?shù)綉?yīng)用程序管理器106。例如,采樣守護進程102可選擇具有最高分數(shù)(例如,將由用戶調(diào)用的最高概率)的多個(例如,三個)應(yīng)用程序(例如,“bundleId”屬性值)來傳輸?shù)綉?yīng)用程序管理器106。采樣守護進程102可排除已在先前時間段(例如,前5分鐘)啟動的應(yīng)用程序。采樣守護進程102可將標識最高分數(shù)的應(yīng)用程序的信息及其各自分數(shù)傳輸至應(yīng)用程序管理器106,如上文參考圖4所述。

在步驟714處,采樣守護進程102可從應(yīng)用程序管理器106接收確定是否可以啟動應(yīng)用程序的請求。例如,采樣守護進程102可接收標識應(yīng)用程序(例如,“bundleId”值)的準入控制請求。

在步驟716處,采樣守護進程102可確定當(dāng)前移動設(shè)備狀況和預(yù)算允許應(yīng)用程序啟動。例如,響應(yīng)于準入控制請求,采樣守護進程102可核查跨系統(tǒng)數(shù)據(jù)和能量預(yù)算、屬性預(yù)算和投票者反饋來確定應(yīng)用程序是否將作為后臺任務(wù)在移動設(shè)備100上啟動,如上文參考圖4詳述。

在步驟718處,采樣守護進程102可向應(yīng)用程序管理器106傳輸應(yīng)答指示可以啟動所標識的應(yīng)用程序。例如,如果狀況適合后臺應(yīng)用程序啟動,則采樣守護進程102可響應(yīng)于準入控制請求向應(yīng)用程序管理器106返回“是”值(例如,確認、是、真,等等)使得應(yīng)用程序管理器106能啟動所標識的應(yīng)用程序。

短期趨勢變化

在一些具體實施中,采樣守護進程102可配置為檢測屬性的趨勢何時變化。例如,客戶端應(yīng)用程序可向采樣守護進程102注冊對特定屬性的興趣。當(dāng)采樣守護進程102檢測特定屬性的趨勢變化時,采樣守護進程102可通知客戶端特定屬性趨勢變化。

例如,應(yīng)用程序管理器106可注冊對“bundleId”屬性(或“bundleId”屬性的特定值)的興趣。當(dāng)采樣守護進程102確定“bundleId”屬性(或其值)趨勢變化時,采樣守護進程102可將該趨勢通知應(yīng)用程序管理器106使得應(yīng)用程序管理器106可預(yù)測性地在移動設(shè)備100上的后臺啟動趨勢變化的應(yīng)用程序。例如,如果應(yīng)用程序正由移動設(shè)備100的用戶重復(fù)調(diào)用,則該應(yīng)用程序趨勢變化。在一些情況下,趨勢變化的應(yīng)用程序為新應(yīng)用程序,或者在趨勢變化之前,為可能未包括在上述“bundleId”屬性對等預(yù)報中的極少使用的應(yīng)用程序。因此,趨勢變化的應(yīng)用程序可不使用上述的應(yīng)用程序啟動預(yù)報方法保持為最新的。

屬性趨勢檢測的目的在于檢測重復(fù)報告給采樣守護進程102的屬性(例如,屬性事件)并且確定啟動該屬性的大致節(jié)奏(例如,周期性),錯誤報告較小節(jié)奏。重復(fù)報告給采樣守護進程102的屬性被稱為“趨勢變化”。采樣守護進程102客戶端隨后可使用確定的節(jié)奏在希望與趨勢變化的屬性相關(guān)聯(lián)的接下來的事件時執(zhí)行功能或操作。

例如,應(yīng)用程序管理器106可使用確定的節(jié)奏設(shè)定將觸發(fā)應(yīng)用程序管理器106在后臺啟動趨勢變化的應(yīng)用程序的定時器,使得在用戶調(diào)用應(yīng)用程序時將更新應(yīng)用程序,如上所述。例如,如果一個應(yīng)用程序的節(jié)奏為5分鐘,則應(yīng)用程序管理器106可設(shè)定每4分鐘將截止并且使得應(yīng)用程序管理器106啟動應(yīng)用程序的定時器,使得應(yīng)用程序可在用戶再次調(diào)用之前接收已更新的內(nèi)容并且更新應(yīng)用程序界面。

在一些具體實施中,本文所述的趨勢檢測機制可用來檢測越過應(yīng)用程序啟動之外的其他系統(tǒng)事件趨勢,諸如重復(fù)的軟件或網(wǎng)絡(luò)通知、應(yīng)用程序崩潰等等。例如,客戶端可注冊對任何屬性或?qū)傩灾档呐d趣并且可在感興趣的屬性趨勢變化時接收通知。

在一些具體實施中,采樣守護進程102可保持可用來跟蹤許多屬性的行為的趨勢變化表。趨勢變化表可包括屬性值標識字段(ATTID)、狀態(tài)字段(STATE)、上一次啟動時間戳(LLT)、指示啟動之間的時間量的啟動間節(jié)奏(ILC)、以及置信字段(C)。

圖8是示出了用于趨勢變化表中的條目(例如,應(yīng)用程序)的狀態(tài)轉(zhuǎn)換的流程圖800。初始在802處,趨勢變化表可包括空條目(例如,記錄),其中ATTID、LLT、ILC和C字段為空(例如,不適用)而STATE被設(shè)為“無效”(I)。當(dāng)在時間t處報告屬性事件時,向趨勢變化表掃描可用條目(例如,狀態(tài)I中的條目)。在可能的無效條目中,可使用幾個方法用于選擇要使用的條目。例如,可選擇隨機無效條目。另選地,可選擇無效條目使得趨勢變化表中的所有空條目按連續(xù)次序保持。如果不存在無效條目,可選擇瞬時(T)狀態(tài)的最舊條目(或隨機條目)來跟蹤最新啟動的應(yīng)用程序。如果不存在I或T狀態(tài)條目,可選擇最舊新(N)狀態(tài)條目來跟蹤新報告的屬性事件。

在步驟804處,一旦選擇趨勢變化表條目,用于跟蹤新報告的屬性事件的所選條目的STATE字段可設(shè)為新(N),ATTID可設(shè)為新報告屬性的屬性值,LLT字段可設(shè)為當(dāng)前時間t(例如,壁鐘時間)而ILC和C字段設(shè)為預(yù)定義最小值ILC_MIN(例如,1分鐘)和C_MIN(例如,0)。

在步驟806處,在時間t'對同一屬性事件的下一個報告中,了解到屬性的表中的條目是否還存在并且還未被逐出(例如,選擇跟蹤另一屬性)。條目的STATE設(shè)為瞬時(T),ILC設(shè)為LLT和當(dāng)前系統(tǒng)時間之間的差值(例如,t’-t或t’-LLT),C字段遞增(例如,預(yù)定義值C_DELTA)。另選地,ILC字段可設(shè)為其舊和新值的一些其他功能,諸如運行平均值。

在步驟808處,在時間t”對同一屬性事件的下一個報告中,了解到屬性的表中的條目是否還存在并且還未被逐出(例如,選擇跟蹤另一屬性)。條目的STATE可保持設(shè)為瞬時(T),ILC設(shè)為LLT和當(dāng)前(例如,墻壁)時鐘時間之間的差值(例如,t”-t’或t”-LLT),C字段再次遞增(例如,預(yù)定義值C_DELTA)。

在步驟810處,如果在屬性事件的幾次報告之后,趨勢變化表條目的C值達到(例如,等于)閾值(例如,C_HIGHTHRESHOLD),在步驟811處,屬性條目的狀態(tài)可變?yōu)镾TATE=A。如果在步驟810處,趨勢變化表條目的C值未達到閾值(例如,C_HIGHTHRESHOLD),則可根據(jù)步驟808來更新條目的值。

無論何時在狀態(tài)“A”時報告屬性事件,如果上一次報告和當(dāng)前報告的時間之間的時間落在某個時間量內(nèi)(例如,ILC_EPSILON=5分鐘),則屬性條目的置信(C)字段遞增直到達到預(yù)定義最大值(例如,C_MAX)為止。當(dāng)趨勢變化表中的屬性條目為活動(A)狀態(tài)時,條目的ILC值可用作啟動率(例如,節(jié)奏)的估計并且可使用條目的ATTID來識別趨勢變化的屬性值。

在一些具體實施中,采樣守護進程102可向客戶端發(fā)送屬性值(ATTID)和節(jié)奏值(ILC)使得客戶端可在希望與屬性值相關(guān)聯(lián)的下一個事件時執(zhí)行某個動作或功能。例如,屬性值和節(jié)奏值可發(fā)送到應(yīng)用程序管理器106使得在希望用戶調(diào)用應(yīng)用程序時應(yīng)用程序管理器106能在后臺啟動所標識的應(yīng)用程序(例如,ATTID、“bundleId”屬性值),從而應(yīng)用程序可在用戶啟動應(yīng)用程序之前可接收到更新的內(nèi)容,如上所述。例如,應(yīng)用程序管理器106可基于節(jié)奏值設(shè)定定時器,該定時器在希望用戶調(diào)用應(yīng)用程序時將喚醒應(yīng)用程序管理器106以啟動該應(yīng)用程序。

在一些具體實施中,采樣守護進程102可基于檢測到的屬性趨勢通知客戶端希望下一次屬性事件的發(fā)生。例如,采樣守護進程102可向應(yīng)用程序管理器106發(fā)送指示應(yīng)用程序管理器106將啟動趨勢變化的應(yīng)用程序的信號或通知。應(yīng)用程序管理器106可通過向采樣守護進程102發(fā)送應(yīng)用程序標識符(例如,“bundleId”屬性值)注冊對應(yīng)用程序的興趣。采樣守護進程102可監(jiān)測用于用戶調(diào)用的應(yīng)用程序(例如,基于報告的“bundleId”啟動事件)來確定應(yīng)用程序是否發(fā)生趨勢變化,如上所述。如果應(yīng)用程序趨勢變化,則采樣守護進程102可確定調(diào)用的節(jié)奏,如上所述,并且在根據(jù)該節(jié)奏確定的時間向應(yīng)用程序管理器106發(fā)送通知或信號。例如,如果節(jié)奏為四分鐘,則采樣守護進程102可每3分鐘(例如,在事件的下一次發(fā)生之前的一段時間)向應(yīng)用程序管理器106發(fā)送信號以使得應(yīng)用程序管理器106啟動應(yīng)用程序。如果節(jié)奏變?yōu)?分鐘,則采樣守護進程102可檢測節(jié)奏變化并且調(diào)整何時向應(yīng)用程序管理器106發(fā)信號。例如,采樣守護進程102可每5分鐘而不是每3分鐘向應(yīng)用程序管理器106發(fā)信號來啟動應(yīng)用程序從而調(diào)整減小的節(jié)奏(例如,調(diào)用之間增大的時間段)。

在出于任何原因每次檢測到屬性趨勢變化表時(例如,添加新條目、更新已有條目,等等),STATE=T或STATE=A中自上一次啟動的時間比其ILC大于ILC_EPSILON的所有條目將使其C值遞減。記下在此刻C值低于最小閾值(例如,C_LOWTHRESHOLD)的任何條目。例如,條目可從狀態(tài)A記到狀態(tài)T或者從狀態(tài)T記到狀態(tài)I。

在一些具體實施中,上述的趨勢檢測機制可用來檢測應(yīng)用程序調(diào)用或啟動之外的趨勢變化事件。例如,上述的趨勢檢測方法和趨勢變化表可用來檢測和跟蹤移動設(shè)備100上的任何復(fù)發(fā)事件(例如,任何屬性事件)。趨勢變化事件可包括屏幕觸摸、網(wǎng)絡(luò)連接、應(yīng)用程序失敗、網(wǎng)絡(luò)入侵的發(fā)生和/或可向采樣守護進程102報告或發(fā)信號的任何其他事件。

推送通知

圖9是示出用于將推送通知提供給移動設(shè)備100的系統(tǒng)的框圖900。在一些具體實施中,移動設(shè)備100可配置為接收推送通知。例如,推送通知可為由推送提供商902發(fā)起并且通過推送通知服務(wù)器906發(fā)送到運行在移動設(shè)備100上的推送服務(wù)守護進程904的消息。

在一些具體實施中,推送提供商902可通過應(yīng)用程序908呈現(xiàn)給移動設(shè)備100的用戶的用戶授權(quán)請求接收授權(quán)來將推送通知發(fā)送給移動設(shè)備100。例如,推送提供商902可為創(chuàng)建(例如,編程、開發(fā))應(yīng)用程序908的同一供貨商擁有、運營和/或保持的服務(wù)器。當(dāng)應(yīng)用程序908在移動設(shè)備100上呈現(xiàn)用戶界面請求授權(quán)推送提供商902向移動設(shè)備100發(fā)送推送通知并且用戶指示該推送通知得到授權(quán)時,推送提供商902可從用戶接收授權(quán)來將推送通知發(fā)送給移動設(shè)備100(例如,推送服務(wù)守護進程904)。例如,用戶可在應(yīng)用程序908呈現(xiàn)的用戶界面上選擇按鈕來指示推送通知授權(quán)用于推送提供商902和/或應(yīng)用程序908。推送提供商902隨后可接收設(shè)備令牌,該令牌標識移動設(shè)備100并且可用來將推送通知路由到移動設(shè)備100。例如,推送通知服務(wù)器906可接收具有推送通知的設(shè)備令牌并且使用該設(shè)備令牌確定哪個移動設(shè)備100將接收該推送通知。

在一些具體實施中,移動設(shè)備100可向推送通知服務(wù)器906發(fā)送標識授權(quán)的推送應(yīng)用程序的信息。例如,移動設(shè)備100可向推送通知服務(wù)器906發(fā)送包含推送通知過濾器914和移動設(shè)備100的設(shè)備令牌的消息926。推送通知服務(wù)器906可存儲設(shè)備令牌(例如,用于移動設(shè)備100的標識符)到推送過濾器914的映射用于推送通知服務(wù)器906所服務(wù)的每個移動設(shè)備。推送過濾器914例如可包括標識已接收到授權(quán)來在移動設(shè)備100上接收推送通知的信息。

在一些具體實施中,推送過濾器914可由推送通知服務(wù)器906用來濾除(例如,阻止發(fā)送)對未經(jīng)過移動設(shè)備100的用戶授權(quán)的應(yīng)用程序的推送通知。推送提供商902發(fā)送到推送通知服務(wù)器906的每個推送通知可包括標識與推送提供商902相關(guān)聯(lián)的應(yīng)用程序908和移動設(shè)備100(例如,設(shè)備令牌)的信息(例如,標識符)。

當(dāng)通知服務(wù)器906接收推送通知時,通知服務(wù)器906可使用移動設(shè)備標識信息(例如,設(shè)備令牌)確定哪些推送過濾器914應(yīng)用到接收的推送通知。通知服務(wù)器906可將推送通知中的應(yīng)用程序標識信息與用于所標識的移動設(shè)備的推送過濾器914進行比較以確定與推送提供商902相關(guān)聯(lián)以及在推送通知中標識的應(yīng)用程序是否標識在推送過濾器914中。如果與推送通知相關(guān)聯(lián)的應(yīng)用程序標識在推送過濾器914中,則通知服務(wù)器906可將從推送提供商902接收的推送通知傳輸?shù)揭苿釉O(shè)備100。如果在推送通知中標識的應(yīng)用程序未標識在推送過濾器914中,則通知服務(wù)器不會將從推送提供商902接收的推送通知傳輸?shù)揭苿釉O(shè)備100并且可刪除該推送通知。

非喚醒推送通知

在一些具體實施中,通知服務(wù)器906可配置為處理高優(yōu)先級推送通知和低優(yōu)先級推送通知。例如,推送提供商902可向推送通知服務(wù)器906發(fā)送高優(yōu)先級推送通知910和/或低優(yōu)先級推送通知912。推送提供商902可例如通過指定發(fā)送到推送通知服務(wù)器906和移動設(shè)備100的推送通知內(nèi)包含的數(shù)據(jù)中推送通知的優(yōu)先級來將推送通知識別為高優(yōu)先級或低優(yōu)先級。

在一些具體實施中,推送通知服務(wù)器906可處理不同于高優(yōu)先級推送通知910的低優(yōu)先級推送通知912。例如,推送通知服務(wù)器906可配置為將高優(yōu)先級推送910中包含的應(yīng)用程序標識信息與推送過濾器914中的授權(quán)的應(yīng)用程序標識信息進行比較以確定是否可將高優(yōu)先級推送通知910傳輸至移動設(shè)備100。如果高優(yōu)先級推送通知910中的應(yīng)用程序標識信息匹配推送過濾器914中的授權(quán)的應(yīng)用程序標識符,則推送通知服務(wù)器906可將高優(yōu)先級推送通知傳輸至移動設(shè)備100。如果高優(yōu)先級推送通知910中的應(yīng)用程序標識信息不匹配推送過濾器914中的授權(quán)的應(yīng)用程序標識符,則推送通知服務(wù)器906將不會把高優(yōu)先級推送通知傳輸至移動設(shè)備100。

在一些具體實施中,推送通知服務(wù)器906可配置為延遲低優(yōu)先級推送通知的輸送。例如,當(dāng)移動設(shè)備100從推送通知服務(wù)器906接收推送通知時,對推送通知的接收使得移動設(shè)備100喚醒(例如,如果處于睡眠或低電力狀態(tài))。當(dāng)移動設(shè)備100喚醒時,移動設(shè)備100將打開會耗損電池、使用蜂窩數(shù)據(jù)、使得移動設(shè)備100發(fā)熱或以另外方式影響移動設(shè)備100的各種子系統(tǒng)和處理器。通過阻止或延遲將低優(yōu)先級推送通知輸送到移動設(shè)備100,移動設(shè)備100可節(jié)省例如網(wǎng)絡(luò)(例如,蜂窩數(shù)據(jù))和系統(tǒng)(例如,電池)資源。

在一些具體實施中,推送通知過濾器914可包括喚醒列表916和非喚醒列表918。喚醒列表916可標識將把低優(yōu)先級推送通知輸送給移動設(shè)備100的應(yīng)用程序。在一些具體實施中,當(dāng)授權(quán)應(yīng)用程序在移動設(shè)備100接收推送通知時,應(yīng)用程序標識信息默認被添加到喚醒列表914。非喚醒列表918可標識將把低優(yōu)先級推送通知延遲的授權(quán)的應(yīng)用程序。當(dāng)描述推送通知發(fā)起的后臺更新時,下文詳述用于填充非喚醒列表918和/或操控喚醒列表916和非喚醒列表918的特定機制。在一些具體實施中,只要在推送過濾器914中(例如,喚醒列表914和/或非喚醒列表918)標識在高優(yōu)先級推送通知中標識的應(yīng)用程序,高優(yōu)先級推送通知將不在推送通知服務(wù)器906處延遲并且將輸送到移動設(shè)備100。

在一些具體實施中,當(dāng)推送通知服務(wù)器906接收低優(yōu)先級推送通知912時,推送通知服務(wù)器906可將低優(yōu)先級推送通知912中的應(yīng)用程序標識符與喚醒列表916和/或非喚醒列表918進行比較。例如,如果低優(yōu)先級推送通知912中的應(yīng)用程序標識信息匹配喚醒列表916中的授權(quán)的應(yīng)用程序標識符,則低優(yōu)先級推送通知912將在通知消息920中被輸送到移動設(shè)備100。

在一些具體實施中,可延遲與在非喚醒列表918中標識的應(yīng)用程序相關(guān)聯(lián)的低優(yōu)先級推送通知的輸送。例如,如果在低優(yōu)先級推送通知912中標識的應(yīng)用程序還在非喚醒列表918中標識,則低優(yōu)先級推送通知912可存儲在推送通知數(shù)據(jù)存儲裝置922中而未立即輸送到移動設(shè)備100。在一些具體實施中,如果推送通知(高或低優(yōu)先級)標識的移動設(shè)備100當(dāng)前未連接到推送通知服務(wù)器906,則對于斷開連接的移動設(shè)備100的推送通知可被存儲在推送通知數(shù)據(jù)存儲裝置922中用于稍后輸送到移動設(shè)備100。

在一些具體實施中,推送數(shù)據(jù)存儲裝置922中存儲的推送通知可保持在推送數(shù)據(jù)存儲裝置922中直到與存儲的推送通知相關(guān)聯(lián)的應(yīng)用程序標識符從非喚醒列表918移動到喚醒列表916為止或在推送通知服務(wù)器906與移動設(shè)備100之間建立網(wǎng)絡(luò)連接為止。例如,當(dāng)另一(高或低優(yōu)先級)推送通知輸送到移動設(shè)備100或當(dāng)移動設(shè)備100向推送通知服務(wù)器906發(fā)送其他傳輸924(例如,狀態(tài)消息、心率消息、保持活動消息,等等)時,可建立推送通知服務(wù)器906與移動設(shè)備100之間的網(wǎng)絡(luò)連接。例如,移動設(shè)備100可向推送通知服務(wù)器905發(fā)送消息924指示移動設(shè)備100將在一時間段(例如,5分鐘)內(nèi)保持活動并且在所指定的活動時間段期間推送通知服務(wù)器906可向移動設(shè)備100發(fā)送所有接收到的推送通知。在一些具體實施中,當(dāng)移動設(shè)備100與推送通知服務(wù)器906之間建立網(wǎng)絡(luò)連接時,推送通知存儲裝置922中存儲的所有推送通知將被輸送到移動設(shè)備100。例如,推送通知數(shù)據(jù)存儲裝置922中存儲的推送通知可通過由其他傳輸在移動設(shè)備100與推送通知服務(wù)器906之間創(chuàng)建的連接來傳輸。

在一些具體實施中,移動設(shè)備100可與推送通知服務(wù)器906建立兩個不同的通信信道。例如,可同時或在不同時間建立這兩個通信信道。移動設(shè)備100例如可具有與推送通知服務(wù)器906的蜂窩數(shù)據(jù)連接和/或Wi-Fi連接。在一些具體實施中,移動設(shè)備100可針對每個通信信道生成不同推送過濾器914并且傳輸?shù)酵扑屯ㄖ?wù)器906。例如,蜂窩數(shù)據(jù)連接可與第一組推送過濾器914相關(guān)聯(lián)用于確定何時通過蜂窩數(shù)據(jù)連接發(fā)送高和低優(yōu)先級推送通知。Wi-Fi數(shù)據(jù)連接可與和蜂窩數(shù)據(jù)推送過濾器相同或不同的第二組推送過濾器914相關(guān)聯(lián)用于確定何時通過Wi-Fi數(shù)據(jù)連接發(fā)送高和低優(yōu)先級推送通知。當(dāng)推送通知服務(wù)器906接收推送通知時,推送通知服務(wù)器可將推送通知中標識的應(yīng)用程序與針對通信信道(例如,Wi-Fi、蜂窩)的推送通知過濾器進行比較,推送通知服務(wù)器906將使用該通信信道把推送通知傳輸?shù)揭苿釉O(shè)備100。

推送發(fā)起的后臺更新

在一些具體實施中,移動設(shè)備100接收到推送通知可觸發(fā)移動設(shè)備100上應(yīng)用程序的后臺更新。例如,當(dāng)移動設(shè)備100(例如,推送服務(wù)守護進程904)從推送通知服務(wù)器906接收推送通知消息920時,推送服務(wù)守護進程904可將推送通知消息920中的應(yīng)用程序標識符與移動設(shè)備100上存儲的推送過濾器928進行比較以確定推送通知消息920是否正確輸送或?qū)⒂赏扑屯ㄖ?wù)器906過濾掉(例如,不輸送)。例如,推送過濾器928、喚醒列表930和非喚醒列表932可分別對應(yīng)于推送過濾器914、喚醒列表916和非喚醒列表918。在一些具體實施中,如果推送服務(wù)守護進程904確定原本不該將推送通知消息920輸送到移動設(shè)備100,則將刪除推送通知消息902。

低優(yōu)先級推送通知

在一些具體實施中,移動設(shè)備100接收的推送通知消息920可包括低優(yōu)先級推送通知。例如,低優(yōu)先級推送通知可指示內(nèi)容更新可用于與推送通知相關(guān)聯(lián)的應(yīng)用程序。因此,當(dāng)?shù)蛢?yōu)先級推送通知使得應(yīng)用程序908啟動時,應(yīng)用程序908可從一個或多個網(wǎng)絡(luò)資源(例如,推送提供商902)下載更新的內(nèi)容。

在一些具體實施中,當(dāng)推送服務(wù)守護進程904接收到與移動設(shè)備100上的應(yīng)用程序(例如,應(yīng)用程序908)相關(guān)聯(lián)的低優(yōu)先級推送通知時,推送服務(wù)守護進程904可詢問采樣守護進程102是否可以啟動與接收的低優(yōu)先級推送通知相關(guān)聯(lián)的應(yīng)用程序。例如,推送服務(wù)器守護進程904可通過向采樣守護進程102發(fā)送與接收到的低優(yōu)先級推送通知相關(guān)聯(lián)的應(yīng)用程序的標識符來請求采樣守護進程102執(zhí)行準入控制。采樣守護進程102可通過核對數(shù)據(jù)預(yù)算、能量預(yù)算、屬性預(yù)算和投票者反饋來執(zhí)行準入控制,如上參考圖4所述。采樣守護進程102可基于準入控制進程的輸出向推送服務(wù)守護進程904返回用于指示是否可以啟動低優(yōu)先級推送通知所標識的應(yīng)用程序的值。

在一些具體實施中,如果從準入控制請求返回的值指示“是”確認啟動應(yīng)用程序,則推送服務(wù)守護進程904將向應(yīng)用程序管理器106發(fā)送低優(yōu)先級推送通知并且應(yīng)用程序管理器106可調(diào)用應(yīng)用程序(例如,應(yīng)用程序908)。應(yīng)用程序908隨后可通過網(wǎng)絡(luò)(例如,互聯(lián)網(wǎng))與推送提供商902通信來從推送提供商902接收更新的內(nèi)容。

在一些具體實施中,如果從準入控制請求返回的值指示“否”不確認啟動應(yīng)用程序,則推送服務(wù)守護進程904將低優(yōu)先級推送通知存儲在推送通知數(shù)據(jù)存儲裝置934中。例如,當(dāng)存儲低優(yōu)先級推送通知時,推送服務(wù)守護進程904將僅存儲針對推送通知中標識的應(yīng)用程序所接收的上一個推送通知。

在一些具體實施中,當(dāng)采樣守護進程102指示推送服務(wù)守護進程904當(dāng)前將不啟動應(yīng)用程序(例如,準入控制應(yīng)答為“否”)時,推送服務(wù)守護進程904可將針對應(yīng)用程序的應(yīng)用程序標識符從喚醒列表930移動到非喚醒列表932。例如,如果采樣守護進程102確定移動設(shè)備的預(yù)算、和/或狀況不允許啟動應(yīng)用程序,則針對與應(yīng)用程序相關(guān)聯(lián)的另外低優(yōu)先級推送通知允許推送通知服務(wù)器906喚醒移動設(shè)備100將僅進一步消耗移動設(shè)備100的數(shù)據(jù)和能量預(yù)算或者使得環(huán)境狀況更壞(例如,使得設(shè)備變熱)。因此,通過將應(yīng)用程序標識符移動到非喚醒列表932以及向推送通知服務(wù)器906發(fā)送包括更新的過濾器928(例如,喚醒列表930和非喚醒列表932)的消息926,通知服務(wù)器906可更新其自身推送過濾器914、喚醒列表916和非喚醒列表918以反映推送過濾器928的變化并且阻止應(yīng)用程序的另外低優(yōu)先級推送通知輸送到移動設(shè)備100。

在一些具體實施中,如果從準入控制請求返回的值指示“從未”確認啟動應(yīng)用程序,則推送服務(wù)守護進程904將刪除低優(yōu)先級推送通知并且從推送過濾器928去除與推送通知相關(guān)聯(lián)的應(yīng)用程序標識符。更新的推送過濾器可被傳輸?shù)酵扑屯ㄖ?wù)器906并且推送通知服務(wù)器906上的推送過濾器914可被更新以阻止推送通知服務(wù)器906發(fā)送與應(yīng)用程序標識符相關(guān)聯(lián)的任何更多推送通知。

在一些具體實施中,采樣守護進程102可將“停止”信號傳輸?shù)酵扑头?wù)守護進程904從而臨時阻止未來的低優(yōu)先級推送通知從推送通知服務(wù)器906發(fā)送到移動設(shè)備100。例如,當(dāng)采樣守護進程102確定數(shù)據(jù)預(yù)算在當(dāng)前小時耗光、能量預(yù)算在當(dāng)前小時耗光、系統(tǒng)經(jīng)歷熱事件(例如,移動設(shè)備100過熱)、移動設(shè)備100具有不良蜂窩連接以及移動設(shè)備100未連接到Wi-Fi和/或移動設(shè)備100連接到語音呼叫但未連接到Wi-Fi時,采樣守護進程102可向推送服務(wù)守護進程904發(fā)送停止信號。當(dāng)推送服務(wù)守護進程904接收停止信號時,推送服務(wù)守護進程904可將喚醒列表930中的應(yīng)用程序標識符移動到非喚醒列表932并且將更新的推送過濾器928傳輸?shù)酵扑屯ㄖ?wù)器906來更新推送過濾器914。因此,推送通知服務(wù)器906將臨時阻止未來低優(yōu)先級推送通知喚醒移動設(shè)備100以及影響移動設(shè)備100的預(yù)算、限制和工作狀況。

在一些具體實施中,采樣守護進程102可將重試信號傳輸?shù)酵扑头?wù)守護進程904。例如,采樣守護進程102可監(jiān)測預(yù)算、網(wǎng)絡(luò)連接、限制和設(shè)備狀況的狀態(tài)并且在推送數(shù)據(jù)預(yù)算未耗盡時,在能量預(yù)算未耗盡時,在移動設(shè)備100未經(jīng)歷熱事件時,在移動設(shè)備100具有良好質(zhì)量蜂窩連接或者連接到Wi-Fi時,在移動設(shè)備100未連接到語音呼叫時以及在啟動率限制已復(fù)位時,將向推送服務(wù)守護進程904發(fā)送重試消息。一旦推送服務(wù)守護進程904接收到重試信號,則推送服務(wù)守護進程904針對推送通知數(shù)據(jù)存儲裝置934中的每個推送通知向采樣守護進程102發(fā)送準入控制請求以確定是否可以啟動與存儲的推送通知相關(guān)聯(lián)的每個應(yīng)用程序(例如,“bundleId”屬性值)。

如果采樣守護進程102從準入控制請求返回“是”,則推送服務(wù)守護進程904可向應(yīng)用程序管理器106發(fā)送推送通知并且應(yīng)用程序管理器106可將與推送通知相關(guān)聯(lián)的應(yīng)用程序作為移動設(shè)備100上的后臺進程啟動,如上所述。一旦啟動應(yīng)用程序,則該應(yīng)用程序可下載內(nèi)容或數(shù)據(jù)更新以及基于下載的數(shù)據(jù)更新應(yīng)用程序用戶界面。應(yīng)用程序管理器106將不詢問采樣守護進程102是否可以啟動與低優(yōu)先級推送通知相關(guān)聯(lián)的應(yīng)用程序。

高優(yōu)先級推送通知

在一些具體實施中,移動設(shè)備100接收的推送通知消息920可包括高優(yōu)先級推送通知。例如,高優(yōu)先級推送通知可指示內(nèi)容更新可用于與推送通知相關(guān)聯(lián)的應(yīng)用程序。因此,當(dāng)高優(yōu)先級推送通知使得應(yīng)用程序調(diào)用時,應(yīng)用程序可從一個或多個網(wǎng)絡(luò)資源下載更新的內(nèi)容。在一些具體實施中,當(dāng)推送服務(wù)守護進程904接收高優(yōu)先級推送通知時,推送服務(wù)守護進程904可向應(yīng)用程序管理器106發(fā)送高優(yōu)先級推送通知而無需向采樣守護進程102web作出準入控制請求。

在一些具體實施中,當(dāng)應(yīng)用程序管理器106接收與應(yīng)用程序相關(guān)聯(lián)的推送通知時,應(yīng)用程序106將向采樣守護進程102web作出準入控制請求。響應(yīng)于準入控制請求,采樣守護進程102可回復(fù)“是”、“否”或“從未”應(yīng)答,如上所述。當(dāng)應(yīng)用程序管理器106接收對準入控制請求的“是”應(yīng)答時,應(yīng)用程序管理器106可將與接收到的高優(yōu)先級推送通知相關(guān)聯(lián)的應(yīng)用程序作為移動設(shè)備100上的后臺進程啟動。

在一些具體實施中,當(dāng)應(yīng)用程序管理器106接收對準入控制請求“否”應(yīng)答時,應(yīng)用程序管理器106可將高優(yōu)先級推送通知存儲在高優(yōu)先級推送通知存儲裝置936中。當(dāng)應(yīng)用程序管理器106接收“從未”應(yīng)答時,應(yīng)用程序管理器106可針對與推送通知相關(guān)聯(lián)的應(yīng)用程序刪除高優(yōu)先級推送通知以及存儲在推送通知數(shù)據(jù)存儲裝置936中的任何推送通知。

在一些具體實施中,采樣守護進程102可向應(yīng)用程序管理器106發(fā)送“進行重試的確認”信號。例如,當(dāng)應(yīng)用程序管理器106從采樣守護進程102接收“進行重試的確認”消息時,應(yīng)用程序管理器106可向與高優(yōu)先級推送通知數(shù)據(jù)存儲裝置936中的每個高優(yōu)先級推送通知相關(guān)聯(lián)的應(yīng)用程序web作出準入控制請求并且當(dāng)響應(yīng)于準入控制請求接收到“是”應(yīng)答時將各個應(yīng)用程序作為后臺進程啟動。

延遲顯示推送通知

在一些具體實施中,高優(yōu)先級推送通知可使得圖形用戶界面顯示在移動設(shè)備100上。例如,接收高優(yōu)先級推送通知可使得標幅、氣球或其他圖形對象顯示在移動設(shè)備100的圖形用戶界面上。圖形對象例如可包括指示接收的推送通知的主題或內(nèi)容的信息。

在一些具體實施中,當(dāng)應(yīng)用程序管理器106接收高優(yōu)先級推送通知時,應(yīng)用程序管理器106可使得通知顯示在移動設(shè)備100的圖形用戶界面上。然而,當(dāng)高優(yōu)先級推送通知指示存在要下載的與高優(yōu)先級推送通知相關(guān)聯(lián)的應(yīng)用程序的數(shù)據(jù)更新時,應(yīng)用程序可在顯示推送通知之前在移動設(shè)備100的后臺啟動。例如,應(yīng)用程序管理器106可配置有在啟動與高優(yōu)先級推送通知相關(guān)聯(lián)的應(yīng)用程序以及顯示將推送通知告知用戶的圖形對象(例如,標幅)之間延遲的時間量(例如,30秒)。該延遲例如可在用戶調(diào)用之前允許應(yīng)用程序有足夠時間下載內(nèi)容更新以及更新應(yīng)用程序的用戶界面。因此,當(dāng)用戶向圖形對象提供輸入或者以另外方式調(diào)用與高優(yōu)先級推送通知相關(guān)聯(lián)的應(yīng)用程序時,應(yīng)用程序的用戶界面將保持為最新的并且用戶將不會被迫使等待應(yīng)用程序的更新。在一些具體實施中,如果應(yīng)用程序管理器106不能啟動與高優(yōu)先級推送通知相關(guān)聯(lián)的應(yīng)用程序,則移動設(shè)備100將顯示圖形對象(例如,標幅)來通知用戶接收到高優(yōu)先級推送通知。

示例性推送通知進程

圖10是用于在推送通知服務(wù)器906執(zhí)行非喚醒推送的示例性進程1000的流程圖。在步驟1002處,推送通知服務(wù)器906可接收推送通知。例如,推送通知服務(wù)器906可從推送通知提供商902(例如,應(yīng)用程序供應(yīng)商運營的服務(wù)器)接收推送通知。

在步驟1004處,推送通知服務(wù)器906可確定推送通知為低優(yōu)先級推送通知。例如,推送通知提供商可在推送通知中包括指定推送通知的優(yōu)先級的數(shù)據(jù)。推送通知服務(wù)器906可分析推送通知的內(nèi)容來確定推送通知的優(yōu)先級。

在步驟1006處,推送通知服務(wù)器906可將推送通知與推送通知過濾器進行比較。例如,推送通知可標識安裝或配置在移動設(shè)備100上的引導(dǎo)低優(yōu)先級推送通知的應(yīng)用程序。推送應(yīng)用程序例如可包括應(yīng)用程序標識符(例如,“bundleId”屬性值)。推送通知服務(wù)器906可將推送通知中的應(yīng)用程序標識符與推送通知過濾器的非喚醒列表918中的應(yīng)用程序標識符進行比較。

在步驟1008處,推送通知服務(wù)器906可確定將存儲低優(yōu)先級推送通知。例如,如果來自低優(yōu)先級推送通知的應(yīng)用程序標識符在推送通知過濾器的非喚醒列表918中,則推送通知服務(wù)器906可確定將低優(yōu)先級推送存儲在推送通知數(shù)據(jù)存儲裝置922中。

在步驟1010處,基于在步驟1008處的確定結(jié)果,低優(yōu)先級推送通知將被存儲在推送通知服務(wù)器906的數(shù)據(jù)庫或數(shù)據(jù)存儲裝置922中而未立即發(fā)送到移動設(shè)備100。

在步驟1012處,推送通知服務(wù)器906可確定已建立與移動設(shè)備100的網(wǎng)絡(luò)連接。例如,推送通知服務(wù)器906可創(chuàng)建與移動設(shè)備100的網(wǎng)絡(luò)連接來輸送另一高或低優(yōu)先級推送。移動設(shè)備100可建立與推送通知服務(wù)器906的網(wǎng)絡(luò)連接來向推送通知服務(wù)器906發(fā)送通知過濾器變化、周期性狀態(tài)更新、保持活動消息或其他消息。

在步驟1014處,推送通知服務(wù)器906可響應(yīng)于確定已建立與移動設(shè)備100的網(wǎng)絡(luò)連接發(fā)送存儲的推送通知。例如,推送通知服務(wù)器906可向移動設(shè)備100發(fā)送在推送通知服務(wù)器906處存儲的低優(yōu)先級推送通知。

圖11是用于響應(yīng)于低優(yōu)先級推送通知執(zhí)行應(yīng)用程序的后臺更新的示例性進程1100的流程圖。在步驟1102處,移動設(shè)備100可從推送通知服務(wù)器906接收低優(yōu)先級推送通知。

在步驟1104處,移動設(shè)備100可確定是否可以啟動與低優(yōu)先級推送通知相關(guān)聯(lián)的應(yīng)用程序。例如,應(yīng)用程序可啟動作為移動設(shè)備100上的后臺進程。移動設(shè)備100可使用如上所述的準入控制進程確定是否可以啟動應(yīng)用程序。例如,移動設(shè)備100(例如,采樣守護進程102)可基于針對移動設(shè)備100確定的數(shù)據(jù)、能量和/或?qū)傩灶A(yù)算確定是否可以啟動應(yīng)用程序。移動設(shè)備100可基于移動設(shè)備的狀況、和/或基于來自各個投票者的應(yīng)答的移動設(shè)備的網(wǎng)絡(luò)連接的狀況確定是否可以啟動應(yīng)用程序。參考上面圖4更具體描述用于確定是否可以啟動應(yīng)用程序(例如,準入控制)的詳情。

在步驟1106處,移動設(shè)備100可在設(shè)備狀況、預(yù)算、限制和其他數(shù)據(jù)指示不可以啟動應(yīng)用程序時存儲低優(yōu)先級推送通知。例如,移動設(shè)備100可將低優(yōu)先級推送通知存儲在移動設(shè)備100上的數(shù)據(jù)庫或其他數(shù)據(jù)存儲裝置中。

在步驟1108處,移動設(shè)備100可響應(yīng)于確定不可以啟動后臺應(yīng)用程序來更新其推送通知過濾器。例如,移動設(shè)備100可將與低優(yōu)先級推送通知相關(guān)聯(lián)的應(yīng)用程序移動到移動設(shè)備100上的推送通知過濾器的非喚醒列表。

在步驟1110處,移動設(shè)備100可將更新的通知過濾器傳輸?shù)酵扑屯ㄖ?wù)器906。推送通知服務(wù)器906可基于從移動設(shè)備100接收的過濾器更新其自身推送通知過濾器以確定何時將低優(yōu)先級推送通知傳輸和不傳輸?shù)揭苿釉O(shè)備100。

在步驟1112處,移動設(shè)備100可確定可以重試啟動與低優(yōu)先級推送通知相關(guān)聯(lián)的應(yīng)用程序。例如,移動設(shè)備100可如上所述確定預(yù)算、限制和設(shè)備狀況允許在移動設(shè)備100上啟動另外的后臺應(yīng)用程序。

在步驟1114處,移動設(shè)備100可確定是否可以啟動與存儲的低優(yōu)先級推送通知相關(guān)聯(lián)的特定應(yīng)用程序。例如,移動設(shè)備100的采樣守護進程102可執(zhí)行準入控制來確定在移動設(shè)備100上配置的預(yù)算在當(dāng)前時間已復(fù)位或者填充以及移動設(shè)備100的環(huán)境狀態(tài)以及網(wǎng)絡(luò)連接足夠好從而啟動特定的后臺應(yīng)用程序。

在步驟1116處,移動設(shè)備100可在移動設(shè)備100確定可以啟動特定應(yīng)用程序時啟動該應(yīng)用程序。例如,特定應(yīng)用程序可作為后臺進程啟動以在用戶調(diào)用該應(yīng)用程序之前下載新內(nèi)容和更新該應(yīng)用程序的用戶界面。該進程將允許用戶調(diào)用應(yīng)用程序并且不必等待下載內(nèi)容更新以及刷新應(yīng)用程序的用戶界面。

圖12是用于響應(yīng)于高優(yōu)先級推送通知執(zhí)行應(yīng)用程序的后臺更新的示例性進程1200的流程圖。在步驟1202處,移動設(shè)備100可接收高優(yōu)先級推送通知。

在步驟1204處,移動設(shè)備100可確定是否可以啟動與高優(yōu)先級推送通知相關(guān)聯(lián)的應(yīng)用程序。例如,移動設(shè)備100的采樣守護進程102可執(zhí)行準入控制以基于移動設(shè)備100的預(yù)算和環(huán)境狀況(例如,設(shè)備狀況、網(wǎng)絡(luò)狀況等等)確定是否可以啟動應(yīng)用程序。

在步驟1206處,移動設(shè)備100可在不可以啟動與高優(yōu)先級推送通知相關(guān)聯(lián)的應(yīng)用程序(例如,準入控制返回“否”)時存儲高優(yōu)先級推送通知。例如,移動設(shè)備100可將高優(yōu)先級推送通知存儲在數(shù)據(jù)庫、隊列或其他適合數(shù)據(jù)結(jié)構(gòu)中。

在步驟1208處,移動設(shè)備100可確定可以重試啟動與存儲的高優(yōu)先級推送通知相關(guān)聯(lián)的應(yīng)用程序。例如,移動設(shè)備100可在數(shù)據(jù)、能量和/或?qū)傩灶A(yù)算已填充、設(shè)備狀況已改善、網(wǎng)絡(luò)狀況已改善或移動設(shè)備100的其他狀況已改變時,確定可以重試啟動應(yīng)用程序,如以上在準入控制描述中所述。

在步驟1210處,移動設(shè)備100可確定是否可以啟動與存儲的高優(yōu)先級推送通知相關(guān)聯(lián)的應(yīng)用程序。例如,移動設(shè)備100可基于上述準則確定是否確可以啟動應(yīng)用程序。

在步驟1212處,移動設(shè)備100可在移動設(shè)備100上的后臺啟動應(yīng)用程序。例如,應(yīng)用程序可啟動作為移動設(shè)備100上的后臺進程,使得應(yīng)用程序可從網(wǎng)絡(luò)(例如,互聯(lián)網(wǎng))上的網(wǎng)絡(luò)資源(例如,內(nèi)容服務(wù)器)下載更新的內(nèi)容。

在步驟1214處,移動設(shè)備100可在將推送通知呈現(xiàn)給用戶之前等待一段時間。例如,移動設(shè)備可被配置為在通知用戶接收到的高優(yōu)先級推送通知之前允許應(yīng)用程序在一段時間內(nèi)下載內(nèi)容。

在步驟1216處,移動設(shè)備100可在移動設(shè)備100的用戶界面上呈現(xiàn)推送通知。例如,移動設(shè)備100可呈現(xiàn)包括描述高優(yōu)先級推送通知的信息的圖形對象(例如,標幅)。用戶例如可選擇圖形對象來調(diào)用應(yīng)用程序。由于在為用戶呈現(xiàn)該通知之前應(yīng)用程序有時間下載內(nèi)容,所以當(dāng)用戶調(diào)用該應(yīng)用程序時,該應(yīng)用程序?qū)⒛軌驗橛脩麸@示更新的內(nèi)容而不迫使用戶等待從網(wǎng)絡(luò)上下載更新內(nèi)容。

后臺上載/下載

圖13是用于在移動設(shè)備100上執(zhí)行數(shù)據(jù)的后臺下載和/或上載的示例性系統(tǒng)1300的框圖。后臺下載和/或上載可為應(yīng)用程序發(fā)起而無需來自用戶的明確輸入的網(wǎng)絡(luò)數(shù)據(jù)傳輸。例如,后臺下載可被執(zhí)行在用戶播放視頻游戲應(yīng)用程序時獲取視頻游戲的下一級。相反,前臺下載或上載可為響應(yīng)于來自用戶的將發(fā)生下載或上載的明確指示所執(zhí)行的網(wǎng)絡(luò)數(shù)據(jù)傳輸。例如,前臺下載可通過用戶選擇下載圖片、電影或文檔的網(wǎng)頁鏈接來發(fā)起。類似地,后臺上載可基于是否從用戶接收將數(shù)據(jù)上載到網(wǎng)絡(luò)資源(例如,服務(wù)器)的明確用戶請求而不同于前臺上載。

在一些具體實施中,可立即為用戶執(zhí)行前臺下載/上載(例如,用戶明確請求的下載/上載)。例如,用戶請求的下載/上載被立即執(zhí)行并且不受預(yù)算限制或其他考慮的影響。可通過蜂窩數(shù)據(jù)連接執(zhí)行前臺下載/上載。相反,可伺機以及在預(yù)選限制并考慮環(huán)境狀況,諸如移動設(shè)備100的溫度來執(zhí)行后臺下載和/或上載。例如,可在屬性得到如上所述的準入控制機制批準時,針對該屬性或?qū)傩灾祱?zhí)行后臺下載或上載。在一些具體實施中,后臺下載和/或上載可限于Wi-Fi網(wǎng)絡(luò)連接。

在一些具體實施中,系統(tǒng)1300可包括后臺傳輸守護進程1302。在一些具體實施中,后臺傳輸守護進程1302可配置為代表運行在移動設(shè)備100上的應(yīng)用程序或進程執(zhí)行數(shù)據(jù)或內(nèi)容的后臺下載和上載。例如,后臺傳輸守護進程1302可代表應(yīng)用程序1304在應(yīng)用程序1304和服務(wù)器1306之間執(zhí)行后臺下載和/或上載。因此,可脫離應(yīng)用程序1304的進程執(zhí)行后臺下載/上載(例如,未在/由請求下載/上載的進程執(zhí)行)。

在一些具體實施中,應(yīng)用程序1304可通過向后臺傳輸守護進程1304發(fā)送下載或上載數(shù)據(jù)的請求來發(fā)起后臺下載/上載。例如,下載數(shù)據(jù)(例如,內(nèi)容)的請求可識別可下載數(shù)據(jù)的網(wǎng)絡(luò)位置。上載數(shù)據(jù)的請求可識別可上載數(shù)據(jù)的網(wǎng)絡(luò)位置和當(dāng)前將數(shù)據(jù)存儲在移動設(shè)備100上的位置。請求還可識別應(yīng)用程序1304。一旦web作出請求,則應(yīng)用程序1304可關(guān)閉或暫停使得應(yīng)用程序在后臺下載/上載正由后臺傳輸守護進程1304執(zhí)行時將不再繼續(xù)消耗移動設(shè)備100上的計算/或網(wǎng)絡(luò)資源。

在一些具體實施中,在接收到執(zhí)行數(shù)據(jù)的后臺上載或下載的請求時,后臺傳輸守護進程1302可向采樣守護進程102發(fā)送確定后臺傳輸守護進程1302是否可以通過網(wǎng)絡(luò)來執(zhí)行數(shù)據(jù)傳輸?shù)恼埱?。例如,后臺傳輸守護進程1302可請求采樣守護進程102執(zhí)行針對數(shù)據(jù)傳輸?shù)臏嗜肟刂?。在準入控制請求中,后臺傳輸守護進程1302可提供用于后臺傳輸守護進程1302的標識符(例如,“bundleId”屬性值)或者用于請求后臺傳輸?shù)膽?yīng)用程序的標識符,從而可對后臺傳輸守護進程或應(yīng)用程序執(zhí)行準入控制。準入控制請求可包括將作為從跨系統(tǒng)數(shù)據(jù)預(yù)算扣除的請求成本而傳輸?shù)臄?shù)據(jù)量。

響應(yīng)于從后臺傳輸守護進程1302接收到準入控制請求,采樣守護進程102可確定在當(dāng)前小時內(nèi)是否耗盡跨系統(tǒng)數(shù)據(jù)和/或能量預(yù)算。在一些具體實施中,如果采樣守護進程102確定移動設(shè)備100連接到外部電源,則采樣守護進程102將不會基于能量預(yù)算阻止后臺下載/上載。采樣守護進程102可確定移動設(shè)備100是否連接到Wi-Fi。采樣守護進程102還可確定移動設(shè)備100是否處于熱事件(例如,工作溫度高于預(yù)定義閾值)中。在一些具體實施中,如果采樣守護進程102確定數(shù)據(jù)預(yù)算已耗盡并且移動設(shè)備100未連接到Wi-Fi,能量預(yù)算已耗盡以及移動設(shè)備100未連接到外部電源,或者移動設(shè)備100處于熱事件中,那么采樣守護進程102將通過后臺傳輸守護進程1302向準入控制請求返回“否”答復(fù)。

在一些具體實施中,當(dāng)后臺傳輸守護進程1302從采樣守護進程102接收到對準入控制請求的“否”答復(fù)時,進程1302可將來自應(yīng)用程序1304的后臺下載/上載請求存儲在請求儲存庫1308中。

在一些具體實施中,采樣守護進程102可將重試信號發(fā)送到后臺傳輸守護進程1302。例如,采樣守護進程102可在數(shù)據(jù)和能量預(yù)算被填充時以及在系統(tǒng)不再經(jīng)歷熱事件時向后臺傳輸守護進程1302發(fā)送重試信號。采樣守護進程102可在移動設(shè)備100連接到Wi-Fi以及外部電源時并且系統(tǒng)未經(jīng)歷熱事件時向后臺傳輸守護進程1302發(fā)送重試信號。例如,當(dāng)連接到Wi-Fi時,可能不需要控制數(shù)據(jù)使用。類似地,當(dāng)連接到外部電源時,可能不需要節(jié)省電池電力。因此,當(dāng)執(zhí)行準入控制時采樣守護進程102可不考慮數(shù)據(jù)和能量預(yù)算。

在一些具體實施中,當(dāng)后臺傳輸守護進程1302接收重試信號時,后臺傳輸守護進程1302可向采樣守護進程102發(fā)送準入控制請求。如果采樣守護進程102響應(yīng)于準入控制請求返回“確認”應(yīng)答,則后臺傳輸守護進程1302可執(zhí)行應(yīng)用程序1304的后臺下載或上載。一旦完成后臺下載,則后臺傳輸守護進程1302可喚醒或調(diào)用應(yīng)用程序1304并且為應(yīng)用程序1304提供下載的數(shù)據(jù)。

在一些具體實施中,后臺傳輸守護進程1302可在后臺下載/上載開始和結(jié)束時通知采樣守護進程102使得采樣守護進程102可調(diào)整預(yù)算并且保持對在移動設(shè)備100上執(zhí)行的后臺下載/上載的統(tǒng)計值。例如,后臺傳輸守護進程1302可向采樣守護進程102發(fā)送“backgroundTransfer”屬性開始或停止事件。在一些具體實施中,后臺傳輸守護進程1302可傳輸通過蜂窩數(shù)據(jù)、Wi-Fi傳輸?shù)淖止?jié)數(shù)(例如,“system.networkBytes”屬性事件)和/或總共字節(jié)使得采樣守護進程102可調(diào)整預(yù)算并且保持對在移動設(shè)備100上執(zhí)行的后臺下載/上載的統(tǒng)計值。

在一些具體實施中,采樣守護進程102可響應(yīng)于準入控制請求向后臺傳輸守護進程1302返回超時值。例如,超時值可指示后臺傳輸守護進程不得不執(zhí)行后臺下載或上載的時間段(例如,5分鐘)。當(dāng)超時時段經(jīng)過時,后臺傳輸守護進程1302將暫停后臺下載或上載。

在一些具體實施中,超時值可基于當(dāng)前小時的保留的能量預(yù)算。例如,采樣守護進程102可確定在基于采樣守護進程102采集的歷史事件數(shù)據(jù)通過Wi-Fi執(zhí)行下載或上載時每秒消耗的能量。采樣守護進程102可通過將保留的能量預(yù)算除以執(zhí)行后臺下載或上載時消耗的能量的比率確定超時周期(例如,消耗的能量/預(yù)算/時間=超時周期)。

在一些具體實施中,后臺下載和/或上載是可恢復(fù)的。例如,如果移動設(shè)備100移出Wi-Fi范圍,則可中止(例如,暫停)后臺下載/上載。當(dāng)移動設(shè)備100重新進入Wi-Fi范圍時,可恢復(fù)暫停的下載/上載。類似地,如果后臺下載/上載消耗掉能量預(yù)算(例如,超時周期經(jīng)過),則可暫停后臺下載/上載。當(dāng)分配另外預(yù)算(例如,在下一小時內(nèi))時,可恢復(fù)暫停的下載/上載。

在一些具體實施中,可基于網(wǎng)絡(luò)連接的質(zhì)量暫停后臺下載/上載。例如,即使移動設(shè)備100可具有移動設(shè)備100和服務(wù)蜂窩塔之間的良好蜂窩數(shù)據(jù)連接以及蜂窩塔和移動設(shè)備100與其傳輸數(shù)據(jù)的服務(wù)器之間的良好數(shù)據(jù)連接,移動設(shè)備100也可能沒有與服務(wù)器的良好連接。例如,移動設(shè)備100和服務(wù)器之間的傳輸率可能很低或者蜂窩接口的吞吐量可能很低。如果后臺下載/上載的傳輸率落在閾值傳輸率值下和/或后臺下載/上載的吞吐量落在閾值吞吐量下,可基于檢測到的不良質(zhì)量網(wǎng)絡(luò)連接中止或暫停后臺下載/上載(例如,數(shù)據(jù)傳輸)直到較好的網(wǎng)絡(luò)連接可用為止。例如,如果Wi-Fi連接變得可用,則可恢復(fù)通過Wi-Fi連接的暫停的后臺下載/上載。

在一些具體實施中,后臺傳輸守護進程1302可配置有對可在某一時刻執(zhí)行后臺下載和/或上載的數(shù)量的限制。例如,后臺傳輸守護進程1302可將同時后臺下載和/或上載的數(shù)量限制為三個。

示例性后臺下載/上載進程

圖14是用于執(zhí)行后臺下載和上載的示例性進程1400的流程圖。例如,可通過后臺傳輸守護進程1302代表移動設(shè)備100上的應(yīng)用程序執(zhí)行后臺下載和/或上載。

在步驟1402處,可接收后臺傳輸請求。例如,后臺傳輸守護進程1302可從運行在移動設(shè)備100上的應(yīng)用程序接收后臺下載/上載請求。例如,一旦應(yīng)用程序web作出請求,可終止或暫停該應(yīng)用程序。該請求可標識應(yīng)用程序并且標識用于數(shù)據(jù)的源和/或目標位置。例如,當(dāng)下載數(shù)據(jù)時,源位置可為服務(wù)器的網(wǎng)絡(luò)地址而目標位置可為移動設(shè)備100的文件系統(tǒng)中的目錄。當(dāng)上載數(shù)據(jù)時,源位置可為文件系統(tǒng)位置而目標位置可為網(wǎng)絡(luò)位置。

在步驟1404處,移動設(shè)備100可確定預(yù)算和設(shè)備狀況不允許數(shù)據(jù)傳輸。例如,后臺傳輸守護進程1302可通過向采樣守護進程102web作出標識后臺傳輸守護進程1302、執(zhí)行后臺傳輸?shù)膽?yīng)用程序、和/或?qū)⒁獋鬏數(shù)臄?shù)據(jù)量的準入控制請求,詢問采樣守護進程102是否可以執(zhí)行所請求的后臺傳輸。采樣守護進程102可確定能量和數(shù)據(jù)預(yù)算是否耗盡以及移動設(shè)備100是否處于熱事件之中。如果預(yù)算耗盡或者移動設(shè)備100處于熱事件之中,采樣守護進程102可向后臺傳輸守護進程1302發(fā)送用于指示不可以執(zhí)行后臺數(shù)據(jù)傳輸(例如,準入控制返回“否”)的消息。

在步驟1406處,移動設(shè)備100可存儲后臺傳輸請求。例如,后臺傳輸守護進程1302可在采樣守護進程102響應(yīng)于準入控制請求返回“否”值時將傳輸請求存儲在傳輸請求儲存庫中。

在步驟1408處,移動設(shè)備100可確定可以重試后臺傳輸。例如,采樣守護進程102可確定數(shù)據(jù)和能量預(yù)算已經(jīng)補充以及移動設(shè)備100未處于熱事件之中。采樣守護進程102可將重試消息發(fā)送到后臺傳輸守護進程1302。后臺傳輸守護進程1302隨后可通過針對存儲的傳輸請求中的每一個web作出另一準入控制請求來嘗試執(zhí)行存儲在傳輸請求儲存庫中的所請求的傳輸。

在步驟1410處,移動設(shè)備100可確定移動設(shè)備100的預(yù)算和狀況允許后臺數(shù)據(jù)傳輸。例如,后臺傳輸守護進程1302可詢問采樣守護進程102是否可以執(zhí)行所請求的后臺傳輸。采樣守護進程102可執(zhí)行準入控制來確定能量和數(shù)據(jù)預(yù)算已被補充以及移動設(shè)備100未處于熱事件之中。如果預(yù)算未耗盡以及如果移動設(shè)備100未處于熱事件之中,采樣守護進程102可向后臺傳輸守護進程1302發(fā)送用于指示可以執(zhí)行后臺數(shù)據(jù)傳輸?shù)南ⅰ?/p>

在步驟1412處,移動設(shè)備100可執(zhí)行后臺傳輸。例如,后臺傳輸守護進程1302可針對請求的應(yīng)用程序執(zhí)行所請求的后臺下載或后臺上載。后臺傳輸守護進程1302可在后臺傳輸開始和結(jié)束(例如,使用“backgroundTransfer”屬性開始和停止事件)時通知采樣守護進程102。后臺傳輸守護進程1302可發(fā)送消息通知采樣守護進程在后臺下載或上載(例如,使用“networkBytes”屬性事件)期間傳輸?shù)淖止?jié)數(shù)。一旦后臺傳輸完成,則后臺傳輸守護進程1302可調(diào)用(例如,啟動或喚醒)web作出后臺傳輸請求的應(yīng)用程序并且將完成狀態(tài)信息(例如,成功、錯誤、下載數(shù)據(jù),等)發(fā)送給請求的應(yīng)用程序。

啟用/禁用后臺更新

圖15示出了用于針對移動設(shè)備上的應(yīng)用程序啟用和/或禁用后臺更新的示例性圖形用戶界面(GUI)1500。例如,GUI 1500可為呈現(xiàn)在移動設(shè)備100的顯示器上的界面,用于接收用戶輸入來調(diào)整移動設(shè)備100上的應(yīng)用程序的后臺更新設(shè)置。

在一些具體實施中,GUI 1500的用戶輸入可基于用戶調(diào)用預(yù)報啟用或禁用針對應(yīng)用程序的正執(zhí)行的后臺更新,如上所述。例如,采樣進程102和/或應(yīng)用程序管理器106可確定是否啟用或禁用對于應(yīng)用程序的后臺更新以及防止應(yīng)用程序被應(yīng)用程序管理器106啟用或者防止應(yīng)用程序被包含在采樣守護進程102生成的應(yīng)用程序調(diào)用預(yù)報中。例如,如果禁用應(yīng)用程序的后臺更新,則采樣守護進程102將不把應(yīng)用程序包含在應(yīng)用程序管理器106請求的用戶調(diào)用的應(yīng)用程序預(yù)報中。因此,應(yīng)用程序管理器106將在禁用后臺更新時不啟動應(yīng)用程序。相反,如果啟用應(yīng)用程序的后臺更新,則應(yīng)用程序可基于用戶調(diào)用概率被包含在采樣守護進程102生成的應(yīng)用程序調(diào)用預(yù)報中。

在一些具體實施中,GUI 1500的用戶輸入可在接收到推送通知時啟用或禁用針對應(yīng)用程序的正執(zhí)行的后臺更新,如上所述。例如,采樣守護進程102、應(yīng)用程序管理器106和/或推送服務(wù)守護進程904可響應(yīng)于接收到推送通知確定是否啟用或禁用對應(yīng)用程序的后臺更新以及阻止應(yīng)用程序管理器106啟動該應(yīng)用程序。例如,如果禁用對應(yīng)用程序的后臺更新以及接收到針對該應(yīng)用程序的推送通知,則應(yīng)用程序管理器106將響應(yīng)于推送通知不啟動應(yīng)用程序來下載更新。

在一些具體實施中,GUI 1500可顯示已配置為執(zhí)行后臺更新的應(yīng)用程序1502-1514。例如,應(yīng)用程序1502-1514可配置或編程為在由應(yīng)用程序管理器106啟動時作為移動設(shè)備100上的后臺進程運行。當(dāng)作為后臺進程運行時,應(yīng)用程序1502-1514可與各種網(wǎng)絡(luò)資源通信來下載當(dāng)前或更新的內(nèi)容。應(yīng)用程序1502-1514隨后可在移動設(shè)備100的用戶調(diào)用時更新其各個用戶界面來呈現(xiàn)更新的內(nèi)容。在一些具體實施中,未配置或編程來執(zhí)行后臺更新的應(yīng)用程序?qū)⒉伙@示在GUI 1500上。

在一些具體實施中,用戶可提供對GUI 1500的輸入來啟用和/或禁用應(yīng)用程序的后臺更新。例如,用戶可相對于打開或關(guān)閉對應(yīng)用程序1502的后臺更新的來回切換1516來為移動設(shè)備102提供輸入(例如,觸摸輸入)。用戶可相對于打開或關(guān)閉對應(yīng)用程序1508的后臺更新的來回切換1518來為移動設(shè)備102提供輸入(例如,觸摸輸入)。

在一些具體實施中,可通過GUI 1500指定另外的選項用于后臺更新應(yīng)用程序。例如,用戶可選擇與應(yīng)用程序1514相關(guān)聯(lián)的圖形對象1510來調(diào)用圖形用戶界面(未示出)用于指定另外的后臺更新選項。后臺更新選項例如可包括用于打開和/或關(guān)閉對應(yīng)用程序1514的后臺更新的開始時間和結(jié)束時間。

在對等設(shè)備之間共享數(shù)據(jù)

圖16示出了用于在對等設(shè)備之間共享數(shù)據(jù)的示例性系統(tǒng)。在一些具體實施中,移動設(shè)備100可與移動設(shè)備1600共享事件數(shù)據(jù)、系數(shù)數(shù)據(jù)和/或事件預(yù)報。例如,移動設(shè)備100和移動設(shè)備1600可為同一用戶所擁有的設(shè)備。因此,可能有利的是在移動設(shè)備100和移動設(shè)備1600之間的每個設(shè)備上共享有關(guān)用戶活動的信息。

在一些具體實施中,移動設(shè)備1600可類似于移動設(shè)備100進行配置,如上所述。例如,移動設(shè)備1600可配置有提供在以上段落中描述的功能(例如,屬性、屬性事件、預(yù)報、準入控制,等等)的采樣守護進程1602。

在一些具體實施中,移動設(shè)備100和移動設(shè)備1600可分別配置有身份服務(wù)守護進程1620和身份服務(wù)守護進程1610。例如,身份服務(wù)守護進程1620和1610可配置為在移動設(shè)備100和移動設(shè)備1600之間傳達信息。身份服務(wù)守護進程可用來通過各種對等和網(wǎng)絡(luò)連接在同一用戶所擁有的設(shè)備之間共享數(shù)據(jù)。例如,身份服務(wù)守護進程1620和身份服務(wù)守護進程1610可通過藍牙、藍牙低功耗、Wi-Fi、LAN、WAN和/或互聯(lián)網(wǎng)連接交換信息。

在一些具體實施中,采樣守護進程1602(和采樣守護進程102)可配置為與在同一用戶所擁有的其他設(shè)備上運行的其他采樣守護進程共享事件預(yù)報信息和系統(tǒng)狀態(tài)信息。例如,如果移動設(shè)備100和移動設(shè)備1600為同一用戶所擁有,則采樣守護進程102和采樣守護進程1602可交換事件預(yù)報信息和/或系統(tǒng)狀態(tài)信息(例如,電池狀態(tài))。例如,采樣守護進程1602可使用身份服務(wù)守護進程1610發(fā)送事件預(yù)報信息和/或系統(tǒng)狀態(tài)信息。身份服務(wù)守護進程1610可建立與身份服務(wù)守護進程1620的連接并且通過身份服務(wù)守護進程1620將事件預(yù)報信息和/或移動設(shè)備1600系統(tǒng)狀態(tài)信息傳達到采樣守護進程102。

在一些具體實施中,應(yīng)用程序1608(例如,采樣守護進程1602的客戶端)可請求采樣守護進程1602將針對指定屬性或?qū)傩灾档氖录A(yù)報發(fā)送到采樣守護進程102。例如,應(yīng)用程序1608可為與移動設(shè)備100的應(yīng)用程序108同步的應(yīng)用程序。例如,應(yīng)用程序108和1608可為配置為在移動設(shè)備100和移動設(shè)備1600之間同步數(shù)據(jù)(例如,媒體文件、消息、狀態(tài)信息等等)的媒體應(yīng)用程序(例如,音樂庫、視頻庫、電子郵件應(yīng)用程序、即時消息應(yīng)用程序等等)。

在一些具體實施中,為了允許對等設(shè)備(例如,移動設(shè)備100)確定何時同步設(shè)備之間的數(shù)據(jù),應(yīng)用程序1608可請求采樣守護進程1602基于移動設(shè)備1600生成的屬性事件數(shù)據(jù)來生成“bundleId”屬性或特定“bundleId”屬性值(例如,用于應(yīng)用程序1608的應(yīng)用程序標識符)的臨時和/或?qū)Φ阮A(yù)報并且將預(yù)報傳輸?shù)讲蓸邮刈o進程102。例如,對等設(shè)備可為同一用戶所擁有的遠程設(shè)備(例如,非當(dāng)前本地設(shè)備)。移動設(shè)備100例如可為移動設(shè)備1600的對等設(shè)備。

在一些具體實施中,請求的客戶端(例如,應(yīng)用程序1608)可指定輸送的調(diào)度和預(yù)報數(shù)據(jù)的持續(xù)時間。例如,應(yīng)用程序1608可請求針對“bundleId”屬性值“mailapp”的對等和/或臨時預(yù)報。應(yīng)用程序1608例如可請求每周生成和交換預(yù)報以及每個預(yù)報包含一周的某一持續(xù)時間或某個時間段。

在一些具體實施中,可靜態(tài)調(diào)度對等設(shè)備之間的數(shù)據(jù)交換。采樣守護進程1602可在嚴格調(diào)度情況下(例如,每24小時的應(yīng)用程序預(yù)報和電池統(tǒng)計值)發(fā)送移動設(shè)備100有必要對移動設(shè)備1600的遠程狀態(tài)具有一致視圖的屬性數(shù)據(jù)。在一些具體實施中,客戶端可向?qū)Φ仍O(shè)備請求根據(jù)要求的屬性預(yù)報或統(tǒng)計值。這些交換是非復(fù)發(fā)性的。當(dāng)接收到請求的數(shù)據(jù)時可通知請求的客戶端。

在一些具體實施中,采樣守護進程1602可將移動設(shè)備1600的系統(tǒng)狀態(tài)數(shù)據(jù)傳輸?shù)讲蓸邮刈o進程102。例如,采樣守護進程1602可接收電池電量水平事件(例如,“batteryLevel”屬性事件)、電池充電事件(例如,“cableplugin”事件)、能量使用事件(例如,“能量”屬性事件)和/或可用來生成電池使用和充電統(tǒng)計值的其他事件并且將電池相關(guān)事件數(shù)據(jù)傳輸?shù)讲蓸邮刈o進程102。例如,可每24小時交換電池狀態(tài)信息??伤艡C交換電池狀態(tài)信息。例如,當(dāng)在移動設(shè)備100和移動設(shè)備1600之間建立通信信道(例如,對等、聯(lián)網(wǎng)等等)時,移動設(shè)備可伺機使用已經(jīng)打開的通信信道交換電池狀態(tài)或其他系統(tǒng)狀態(tài)信息(例如,當(dāng)前前臺應(yīng)用程序的標識)。

作為另一示例,采樣守護進程1602可接收熱水平事件(例如,“thermalLevel”屬性事件)、網(wǎng)絡(luò)事件(例如,“networkQuality”屬性事件、“networkBytes”屬性事件)并且將熱和/或網(wǎng)絡(luò)事件傳輸?shù)讲蓸邮刈o進程102。采樣守護進程1602可從應(yīng)用程序管理器106接收指示當(dāng)前在移動設(shè)備1600的前臺的那些應(yīng)用程序(例如,應(yīng)用程序標識符)的事件(例如,“system.foregroundApp”屬性事件)并且將該前臺應(yīng)用程序信息傳輸?shù)讲蓸邮刈o進程102。在一些具體實施中,在事件一發(fā)生(例如,在對等設(shè)備之間一建立連接),就可與對等設(shè)備交換熱事件和前臺應(yīng)用程序變化信息。在一些具體實施中,可周期性地交換網(wǎng)絡(luò)狀態(tài)信息(例如,每天一次、每天兩次、每小時,等等)。

在從采樣守護進程1602接收預(yù)報事件數(shù)據(jù)和/或系統(tǒng)事件數(shù)據(jù)時,采樣守護進程102可將預(yù)報數(shù)據(jù)和/或事件數(shù)據(jù)存儲在對等數(shù)據(jù)存儲裝置1622中。類似地,采樣守護進程1602從采樣守護進程102接收的任何預(yù)報數(shù)據(jù)和/或事件數(shù)據(jù)可存儲在對等數(shù)據(jù)存儲裝置1612中。在一些具體實施中,從另一設(shè)備接收的預(yù)報數(shù)據(jù)和/或事件數(shù)據(jù)可與設(shè)備描述相關(guān)聯(lián)。例如,設(shè)備描述可包括設(shè)備名、設(shè)備標識符和標識設(shè)備的型號的型號標識符。可使用設(shè)備描述來在對等數(shù)據(jù)存儲裝置1622中查詢設(shè)備的預(yù)報數(shù)據(jù)和/或事件數(shù)據(jù)。一旦移動設(shè)備100和移動設(shè)備1600已交換預(yù)報數(shù)據(jù)和/或事件數(shù)據(jù),移動設(shè)備可使用交換的信息來確定何時使用下文的遠程準入控制機制彼此通信。通過僅在需要信息時以及設(shè)備的電池狀態(tài)可支持共享信息時允許設(shè)備共享信息,可改善通信的電力管理。

遠程準入控制

在一些具體實施中,移動設(shè)備100(或移動設(shè)備1600)可基于從另一設(shè)備接收的數(shù)據(jù)執(zhí)行準入控制。例如,采樣守護進程102可基于從采樣守護進程1602接收并且在對等數(shù)據(jù)存儲裝置1622中存儲的預(yù)報和系統(tǒng)事件數(shù)據(jù)執(zhí)行準入控制。例如,為了與應(yīng)用程序1608同步數(shù)據(jù),應(yīng)用程序108可向身份服務(wù)守護進程1620發(fā)送同步消息。例如,同步消息可包括移動設(shè)備100的標識符、移動設(shè)備1600的標識符、優(yōu)先級標識符(例如,高、低)和消息有效載荷(例如,要同步的數(shù)據(jù))。

低優(yōu)先級消息

在一些具體實施中,可在經(jīng)過準入控制后傳輸?shù)蛢?yōu)先級消息。例如,低優(yōu)先級消息可為與自由處理(例如,后臺應(yīng)用程序、系統(tǒng)實體、預(yù)期活動、并非由用戶發(fā)起的活動)相關(guān)聯(lián)的消息。例如,身份服務(wù)守護進程1620可向采樣守護進程102發(fā)送屬于應(yīng)用程序1608的數(shù)據(jù)包標識符的“bundleId”屬性值(例如,“bundleId”=“1608”)的準入控制請求。除了“bundleId”屬性名和值(例如,“1608”)之外,身份服務(wù)守護進程1620可在準入控制請求中提供設(shè)備名(例如,“設(shè)備1600”)來指示應(yīng)用程序108請求與另一設(shè)備進行通信的準入控制。

在一些具體實施中,響應(yīng)于接收準入控制請求,采樣守護進程102可執(zhí)行本地準入控制和遠程準入控制。例如,采樣守護進程102可如上所述執(zhí)行本地準入控制來確定移動設(shè)備100的狀態(tài)是否允許與指定的屬性值(例如,“bundleId”=“1608”)相關(guān)聯(lián)的事件發(fā)生。采樣守護進程102例如可核查本地能量、數(shù)據(jù)和屬性預(yù)算,以及查詢投票者反饋來確定移動設(shè)備100的狀態(tài)是否允許與指定的屬性值(例如,“bundleId”=“1608”)相關(guān)聯(lián)的事件。

除了執(zhí)行本地準入控制之外,采樣守護進程102可基于從移動設(shè)備1600接收并存儲在對等數(shù)據(jù)存儲裝置1622中的“bundleId”屬性預(yù)報、事件數(shù)據(jù)和系統(tǒng)數(shù)據(jù)執(zhí)行遠程準入控制。例如,采樣守護進程102可使用設(shè)備標識符(例如,“設(shè)備1600”、設(shè)備名、唯一標識符、UUID等等)來在對等數(shù)據(jù)存儲裝置1622中定位與移動設(shè)備1600相關(guān)聯(lián)的數(shù)據(jù)。采樣守護進程102可分析從采樣守護進程1602接收的屬性(例如,“bundleId”)預(yù)報數(shù)據(jù)來確定在當(dāng)前15分鐘時隙中應(yīng)用程序1608是否有可能被移動設(shè)備1600上的用戶調(diào)用。如果應(yīng)用程序1608在當(dāng)前15分鐘時隙內(nèi)沒有可能被用戶調(diào)用,則采樣守護進程102可響應(yīng)于準入控制請求返回“否”值。例如,通過允許應(yīng)用程序108僅在應(yīng)用程序1608有可能在移動設(shè)備1600上被使用時與應(yīng)用程序1608同步,則采樣守護進程102可延遲同步進程并且節(jié)省系統(tǒng)資源(例如,電池、CPU周期、網(wǎng)絡(luò)數(shù)據(jù))直到用戶有可能使用移動設(shè)備1600上的應(yīng)用程序1608時為止。

在一些具體實施中,如果應(yīng)用程序1608在當(dāng)前15分鐘時隙內(nèi)有可能由移動設(shè)備1600的用戶調(diào)用,則采樣守護進程102可核查與移動設(shè)備1600相關(guān)聯(lián)并且存儲在對等數(shù)據(jù)存儲裝置1622中的系統(tǒng)數(shù)據(jù)。例如,采樣守護進程102可核查與移動設(shè)備1600相關(guān)聯(lián)的系統(tǒng)數(shù)據(jù)來確定移動設(shè)備1600是否具有足夠保留的電池電荷來執(zhí)行應(yīng)用程序108與應(yīng)用程序1608之間的同步。例如,采樣守護進程102可核查是否存在足夠電池電荷來完成應(yīng)用程序108與應(yīng)用程序1608之間的同步。采樣守護進程102可核查是否存在足夠電池電荷來執(zhí)行同步以及繼續(xù)工作直到下一次預(yù)期的電池再充電(例如,“cablePlugin”屬性事件)為止。例如,采樣守護進程102可為“cablePlugin”屬性生成標識下一個“cablePlugin”屬性事件有可能何時發(fā)生的臨時預(yù)報。采樣守護進程102可分析能量使用統(tǒng)計值(事件)來預(yù)測能量使用直到下一次“cablePlugin”事件為止并且確定是否存在足夠多余能量服務(wù)于應(yīng)用程序108與應(yīng)用程序1608之間的同步傳輸。如果采樣守護進程102確定移動設(shè)備1600沒有足夠能量(例如,電池電荷)服務(wù)于同步,則采樣守護進程102可響應(yīng)于遠程準入控制請求返回“否”值。

在一些具體實施中,采樣守護進程102可核查與移動設(shè)備1600相關(guān)聯(lián)的系統(tǒng)數(shù)據(jù)來確定移動設(shè)備1600是否處于正常熱狀態(tài)(例如,不是太熱)并且可處理同步請求。例如,如果從移動設(shè)備1600接收到的“thermalLevel”屬性事件數(shù)據(jù)指示移動設(shè)備1600當(dāng)前正工作在高于閾值的溫度下,則采樣守護進程102可通過響應(yīng)于遠程準入控制請求返回“否”值來阻止同步通信。

在一些具體實施中,當(dāng)預(yù)報數(shù)據(jù)指示用戶有可能調(diào)用移動設(shè)備1600上的應(yīng)用程序1608以及能量、熱和其他系統(tǒng)狀態(tài)信息指示移動設(shè)備1600的狀況能處理來自移動設(shè)備100的通信時,采樣守護進程102可響應(yīng)于該準入控制請求向身份服務(wù)守護進程1620返回“是”值。響應(yīng)于針對準入控制請求接收到“是”值,身份服務(wù)守護進程1620可將應(yīng)用程序108的同步消息傳輸?shù)揭苿釉O(shè)備1600上的身份服務(wù)守護進程1610。應(yīng)用程序108和應(yīng)用程序1608隨后可通過身份服務(wù)守護進程1620和身份服務(wù)守護進程1610交換消息來同步數(shù)據(jù)。

在一些具體實施中,可在經(jīng)過遠程準入控制后傳輸高優(yōu)先級消息。例如,高優(yōu)先級消息可為與用戶發(fā)起的任務(wù)相關(guān)聯(lián)的消息,諸如與前臺應(yīng)用程序相關(guān)聯(lián)的消息或響應(yīng)于用戶提供輸入生成的消息。在一些具體實施中,可類似于低優(yōu)先級消息處理高優(yōu)先級消息的準入控制。然而,當(dāng)執(zhí)行高優(yōu)先級消息的遠程準入控制時,可承認(允許)高優(yōu)先級消息而無需考慮屬性預(yù)報數(shù)據(jù)(例如,“bundleId”預(yù)報數(shù)據(jù)),因為高優(yōu)先級消息通常由某個用戶動作觸發(fā)而不是由某個自由后臺任務(wù)發(fā)起。

在一些具體實施中,當(dāng)執(zhí)行對高優(yōu)先級消息的準入控制時,可核查遠程設(shè)備(例如,移動設(shè)備1600)的電池狀態(tài)以確保遠程設(shè)備(例如,對等設(shè)備)具有足夠電池電荷可用于處理高優(yōu)先級消息。如果存在足夠電池電荷可用于移動設(shè)備,則遠程準入控制將批準高優(yōu)先級消息。例如,采樣守護進程102可在存在足夠的保留電池電荷來處理高優(yōu)先級消息時響應(yīng)于遠程準入請求將“是”值傳輸?shù)缴矸莘?wù)守護進程1620。如果不存在足夠電池電荷可用于移動設(shè)備,則遠程準入控制將拒絕高優(yōu)先級消息。例如,采樣守護進程102可在存在足夠的保留電池電荷來處理高優(yōu)先級消息時響應(yīng)于遠程準入請求將“否”值傳輸?shù)缴矸莘?wù)守護進程1620。因此,身份服務(wù)守護進程1620將在對等設(shè)備具有足夠保留的電池電荷來處理討論中的消息時發(fā)起與對等設(shè)備(例如,移動設(shè)備1600)的通信。

在一些具體實施中,當(dāng)采樣守護進程102被通知高優(yōu)先級消息時,采樣守護進程102可將當(dāng)前電池狀態(tài)信息(例如,當(dāng)前電池水平)發(fā)送到身份服務(wù)守護進程1620。身份服務(wù)守護進程1620隨后可將電池狀態(tài)信息添加到高優(yōu)先級消息。因此,系統(tǒng)狀態(tài)信息可通過在移動設(shè)備100和移動設(shè)備1600之間傳輸?shù)钠渌⒅猩訋щ姵貭顟B(tài)信息(或其他信息,例如,熱水平、前臺應(yīng)用程序等等)有效地在設(shè)備之間共享。

在一些具體實施中,采樣守護進程102可將重試消息發(fā)送到身份服務(wù)守護進程1620。例如,當(dāng)移動設(shè)備100或移動設(shè)備1600上的狀況改變(例如,電池狀況改善)時,采樣守護進程102可向身份服務(wù)守護進程1620發(fā)送重試消息。在一些具體實施中,當(dāng)遠程焦點應(yīng)用程序變化時可生成重試消息。例如,如果遠程對等設(shè)備上的用戶正使用“mailapp”應(yīng)用程序,則“mailapp”應(yīng)用程序變?yōu)榻裹c應(yīng)用程序。當(dāng)用戶開始使用“webbrowser”應(yīng)用程序時,焦點應(yīng)用程序變?yōu)椤皐ebbrowser”應(yīng)用程序。當(dāng)對等數(shù)據(jù)在移動設(shè)備100與移動設(shè)備1600之間交換時,焦點應(yīng)用程序的變化可作為事件報告給采樣守護進程1602,并且傳輸?shù)讲蓸邮刈o進程102。在接收到指示對等設(shè)備1602上的焦點應(yīng)用程序的變化的事件信息時,采樣守護進程102可向身份服務(wù)守護進程1620發(fā)送重試消息。身份服務(wù)守護進程1620隨后可重試由采樣守護進程102拒絕的每個消息的準入控制。例如,在從采樣守護進程102接收到重試消息時,身份服務(wù)守護進程1620可存儲拒絕的消息(例如,傳輸任務(wù))并且通過準入控制發(fā)送被拒絕的消息。在一些具體實施中,可在經(jīng)過一段時間之后傳輸被拒絕的消息。例如,可在經(jīng)過可配置的時間段之后,將未通過準入控制的消息發(fā)送到對等設(shè)備。

在一些具體實施中,在采樣守護進程102指示移動設(shè)備100或移動設(shè)備1600上的狀況變化時,身份服務(wù)守護進程1620可中斷數(shù)據(jù)流傳輸。例如,如果采樣守護進程102確定移動設(shè)備100或移動設(shè)備1600上的電池狀況已改變使得移動設(shè)備中的一個可能消耗光電池電力,則采樣守護進程102可告知身份服務(wù)守護進程1620停止傳輸以及重試與數(shù)據(jù)流相關(guān)聯(lián)的屬性事件的準入控制。

用于在對等設(shè)備之間共享數(shù)據(jù)的進程

圖17示出了用于在對等設(shè)備之間共享數(shù)據(jù)的示例性進程1700。在上文參考圖16可見對進程1700的另外詳情。在步驟1702處,移動設(shè)備可從對等設(shè)備接收事件數(shù)據(jù)。例如,事件數(shù)據(jù)可作為“摘要”(例如,預(yù)報、統(tǒng)計值等等)或原始(例如,未處理的)事件數(shù)據(jù)來共享。例如,當(dāng)?shù)诙O(shè)備和移動設(shè)備由同一用戶所擁有時,第二設(shè)備(例如,移動設(shè)備1600)為移動設(shè)備100的對等設(shè)備。移動設(shè)備100可接收與移動設(shè)備1600的系統(tǒng)狀態(tài)(例如,電池狀態(tài)、網(wǎng)絡(luò)狀態(tài)、前臺應(yīng)用程序標識符等等)有關(guān)的事件數(shù)據(jù)。移動設(shè)備可基于在移動設(shè)備1600上已發(fā)生的事件從移動設(shè)備1600接收屬性事件預(yù)報、統(tǒng)計值或原始事件數(shù)據(jù)。例如,對等設(shè)備1600上的應(yīng)用程序1608可指示對等設(shè)備1600上的采樣守護進程1602生成對特定屬性或?qū)傩灾档念A(yù)報并將預(yù)報發(fā)送到移動設(shè)備100。

在步驟1704處,移動設(shè)備100上的身份服務(wù)守護進程1620可接收傳輸?shù)綄Φ仍O(shè)備1600的消息。例如,在移動設(shè)備上運行的應(yīng)用程序108可能需要與對等設(shè)備1600上的對應(yīng)應(yīng)用程序1608共享、交換或同步數(shù)據(jù)。應(yīng)用程序108可將包含將要共享的數(shù)據(jù)的消息發(fā)送到身份服務(wù)守護進程1620。

在步驟1706處,移動設(shè)備100上的采樣守護進程102可基于從對等設(shè)備1600接收的數(shù)據(jù)來確定是否傳輸該消息。例如,采樣守護進程102可執(zhí)行本地準入控制核查以及遠程準入控制核查來確定在當(dāng)前時間是否將消息發(fā)送到對等設(shè)備1600。如果從對等設(shè)備1600接收的屬性事件預(yù)報指示對等設(shè)備1600的用戶在當(dāng)前時間有可能調(diào)用應(yīng)用程序1608以及如果事件數(shù)據(jù)指示對等設(shè)備1600的狀況(例如,電池狀態(tài)、熱水平等等)如此使得發(fā)起與對等設(shè)備1600的通信將不會耗盡電池或者使得熱狀態(tài)更差,則采樣守護進程102可批準該消息的傳輸。

在步驟1708處,一旦采樣守護進程102執(zhí)行準入控制并且批準發(fā)起與對等設(shè)備1600的通信時,身份服務(wù)守護進程1620可將該消息傳輸?shù)綄Φ仍O(shè)備1600。例如,身份服務(wù)守護進程1620可將該消息傳輸?shù)綄Φ仍O(shè)備1600的身份服務(wù)守護進程1610。身份服務(wù)守護進程1610隨后可將消息傳輸?shù)綉?yīng)用程序1608使得應(yīng)用程序108和應(yīng)用程序1608可同步數(shù)據(jù)。

示例性系統(tǒng)架構(gòu)

圖18是一個可實現(xiàn)圖1-圖17的特征和進程的示例性計算設(shè)備1800的框圖。計算設(shè)備1800例如可為智能電話、平板電腦、膝上型計算機、可穿戴設(shè)備(例如,表)、機頂盒或車輛媒體系統(tǒng)。計算設(shè)備1800可以包括存儲器接口1802、一個或多個數(shù)據(jù)處理器、圖像處理器和/或中央處理單元1804,以及外圍設(shè)備接口1806。存儲器接口1802、一個或多個處理器1804和/或外圍設(shè)備接口1806可為獨立部件,或者可集成到一個或多個集成電路中。計算設(shè)備1800中的各種部件可由一條或多條通信總線或信號線耦合。

可將傳感器、設(shè)備和子系統(tǒng)耦合到外圍設(shè)備接口1806以有利于多個功能性。例如,可以將運動傳感器1810、光傳感器1812和接近傳感器1814耦合到外圍設(shè)備接口1806以有利于取向、照明和接近功能。也可以將其他傳感器1816連接到外圍設(shè)備接口1806,例如全球?qū)Ш叫l(wèi)星系統(tǒng)(GNSS)(如GPS接收器)、溫度傳感器、生物測定傳感器、磁力儀或其他感測設(shè)備,以有利于相關(guān)功能。

可利用照相機子系統(tǒng)1820和光學(xué)傳感器1822(例如,電荷耦合器件(CCD)或互補金屬氧化物半導(dǎo)體(CMOS)光學(xué)傳感器)來有利于照相機功能,例如拍攝照片和視頻剪輯。照相機子系統(tǒng)1820和光學(xué)傳感器1822可用于收集要在認證用戶期間使用的用戶的圖像,例如通過進行面部識別分析。

可通過一個或多個無線通信子系統(tǒng)1824來方便通信功能,所述無線通信子系統(tǒng)可包括射頻接收器與發(fā)射器和/或光學(xué)(如紅外)接收器與發(fā)射器。通信子系統(tǒng)1824的具體設(shè)計與實現(xiàn)可取決于計算設(shè)備1800旨在通過其工作的通信網(wǎng)絡(luò)。例如,計算設(shè)備1800可包括設(shè)計用于通過GSM網(wǎng)絡(luò)、GPRS網(wǎng)絡(luò)、EDGE網(wǎng)絡(luò)、Wi-Fi或WiMax網(wǎng)絡(luò)以及BluetoothTM網(wǎng)絡(luò)工作的通信子系統(tǒng)1824。具體地講,無線通信子系統(tǒng)1824可包括主機協(xié)議使得設(shè)備100可被配置為其他無線設(shè)備的基站。

可將音頻子系統(tǒng)1826耦合到揚聲器1828和麥克風(fēng)1830以有利于啟用語音的功能,例如講話者識別、語音復(fù)制、數(shù)字記錄和電話功能。可以配置音頻子系統(tǒng)1826以有利于例如處理語音命令、聲紋鑒別和語音認證。

I/O子系統(tǒng)1840可以包括觸摸表面控制器1842和/或其他輸入控制器1844。觸摸表面控制器1842可以耦合到觸摸表面1846。觸摸表面1846和觸摸表面控制器1842例如能夠利用多種觸敏技術(shù)的任何一種檢測接觸和運動或其中斷,觸敏技術(shù)包括但不限于電容性、電阻性、紅外和表面聲波技術(shù),以及用于確定與接觸表面1846接觸的一個或多個點的其他接近傳感器陣列或其他元件。

可將一個或多個其他輸入控制器1844耦接到其他輸入/控制設(shè)備1848,諸如一個或多個按鈕、搖臂開關(guān)、拇指滾輪、紅外端口、USB端口和/或指針設(shè)備(例如觸筆)。所述一個或多個按鈕(未示出)可包括用于揚聲器1828和/或麥克風(fēng)1830的音量控制的增大/減小按鈕。

在一個具體實施中,按壓按鈕第一持續(xù)時間可解除對觸摸表面1846的鎖定,按壓按鈕比第一持續(xù)時間長的第二持續(xù)時間可打開或關(guān)閉對計算設(shè)備1800的供電。將按鈕按下,第三持續(xù)時間能夠激活語音控制或語音命令、使用戶能夠向麥克風(fēng)1830中說出命令的模塊,以令設(shè)備執(zhí)行所說的命令。用戶能夠定制一個或多個按鈕的功能。例如,也可以使用觸摸表面1846實現(xiàn)虛擬或軟按鈕和/或鍵盤。

在一些具體實施中,計算設(shè)備1800能夠呈現(xiàn)記錄的音頻和/或視頻文件,例如MP3、AAC和MPEG文件。在一些具體實施中,計算設(shè)備1800能夠包括MP3播放器,諸如iPodTM的功能。

存儲器接口1802可以耦合到存儲器1850。存儲器1850可包括高速隨機存取存儲器和/或非易失性存儲器,諸如一個或多個磁盤存儲設(shè)備、一個或多個光學(xué)存儲設(shè)備,和/或閃存存儲器(例如NAND、NOR)。存儲器1850可存儲操作系統(tǒng)1852,例如Darwin、RTXC、LINUX、UNIX、OSX、WINDOWS或嵌入式操作系統(tǒng)(如VxWorks)。

操作系統(tǒng)1852可包括用于處理基礎(chǔ)系統(tǒng)服務(wù)以及用于執(zhí)行硬件相關(guān)任務(wù)的指令。在一些具體實施中,操作系統(tǒng)1852可以是內(nèi)核(如UNIX內(nèi)核)。在一些具體實施中,操作系統(tǒng)1852可包括用戶基于用戶活動執(zhí)行對移動設(shè)備的動態(tài)調(diào)整的指令。例如,操作系統(tǒng)1852可實現(xiàn)動態(tài)調(diào)整特征,如參考圖1-圖17所述。

存儲器1850還可存儲通信指令1854以有利于與一個或多個附加設(shè)備、一個或多個計算機和/或一個或多個服務(wù)器通信。存儲器1850可包括圖形用戶界面指令1856以有助于圖形用戶界面處理;傳感器處理指令1858以用助于傳感器相關(guān)的處理和功能;電話指令1860以用助于電話相關(guān)的處理和功能;電子消息指令1862以用助于電子消息相關(guān)的處理和功能;web瀏覽指令1864以有助于web瀏覽相關(guān)的處理和功能;媒體處理指令1866以用助于媒體處理相關(guān)的處理和功能;GNSS/導(dǎo)航指令1868以用助于GNSS和導(dǎo)航相關(guān)的處理和指令;和/或相機指令1870以有助于相機相關(guān)的處理和功能。

存儲器1850可存儲其它軟件指令1872以促進其他處理和功能,諸如參考圖1-圖17所述的動態(tài)調(diào)整處理和功能。

存儲器1850還可存儲其他軟件指令1874,例如用于方便與網(wǎng)絡(luò)視頻相關(guān)的過程和功能的網(wǎng)絡(luò)視頻指令,和/或用于方便與網(wǎng)上購物相關(guān)的過程和功能的網(wǎng)上購物指令。在一些具體實施中,媒體處理指令1866分為音頻處理指令和視頻處理指令,分別用于方便與音頻處理相關(guān)的過程和功能以及與視頻處理相關(guān)的過程和功能。

上面標識的指令和應(yīng)用程序中的每一者均可與用于執(zhí)行上述一個或多個功能的指令集對應(yīng)。這些指令不需要作為獨立的軟件程序、進程或模塊來實施。存儲器1850可包括另外的指令或更少的指令。此外,可在硬件和/或軟件中,包括在一個或多個信號處理和/或?qū)S眉呻娐分?,?zhí)行計算設(shè)備1800的各種功能。

在一些具體實施中,計算機可讀存儲設(shè)備、介質(zhì)、存儲器可包括包含位流等的電纜或無線信號。然而,在提及時,非暫態(tài)計算機可讀存儲介質(zhì)明確地排除諸如能量、載波信號、電磁波、和信號本身這樣的介質(zhì)。

盡管使用各種示例和其他信息描述所附權(quán)利要求的范圍的方面,但是如本領(lǐng)域技術(shù)人員能使用這些示例導(dǎo)出種類眾多的具體實施,不應(yīng)當(dāng)基于這種示例中的特定特征或布置對權(quán)利要求施加限制。進一步以及盡管以特定于結(jié)構(gòu)特征和/或方法步驟的示例的語言對一些主題進行了描述,但應(yīng)當(dāng)理解,所附權(quán)利要求中限定的主題并不一定限于這些所述特定特征或行為。例如,這種功能可以不同方式分發(fā)或者在本文所標識的那些部件之外的部件中執(zhí)行。相反,所述特征和步驟被披露作為所附權(quán)利要求的范圍內(nèi)的系統(tǒng)部件和方法的示例。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
海阳市| 乐昌市| 钟山县| 广昌县| 巴南区| 龙山县| 达日县| 凌源市| 翁源县| 南安市| 南华县| 浏阳市| 乌鲁木齐县| 瓦房店市| 安化县| 九龙县| 金门县| 二连浩特市| 洮南市| 武清区| 丹棱县| 锡林浩特市| 高台县| 榕江县| 河间市| 阜城县| 虹口区| 吉安县| 东乡| 瑞安市| 太保市| 砀山县| 分宜县| 吐鲁番市| 许昌市| 襄垣县| 游戏| 武清区| 湘乡市| 新源县| 绥宁县|