CN111176698B - 基于对等事件数据来对移动设备进行动态调整 - Google Patents
基于对等事件数据来对移动设备进行动态调整 Download PDFInfo
- Publication number
- CN111176698B CN111176698B CN202010103608.2A CN202010103608A CN111176698B CN 111176698 B CN111176698 B CN 111176698B CN 202010103608 A CN202010103608 A CN 202010103608A CN 111176698 B CN111176698 B CN 111176698B
- Authority
- CN
- China
- Prior art keywords
- mobile device
- attribute
- application
- sampling daemon
- event
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/60—Subscription-based services using application servers or record carriers, e.g. SIM application toolkits
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W76/00—Connection management
- H04W76/10—Connection setup
- H04W76/14—Direct-mode setup
Abstract
本发明涉及基于对等事件数据来对移动设备进行动态调整。在一些具体实施中,移动设备可被配置为监测与移动设备和/或对等设备相关联的环境、系统和用户事件。一个或多个事件的发生可触发对系统设置的调整。该移动设备可被配置为基于用户对所预测的调用的预报来将经常调用的应用程序保持为最新的。在一些具体实施中,该移动设备可接收与应用程序相关联的用于指示新内容可用于应用程序下载的推送通知。该移动设备可在后台中启动与推送通知相关联的应用程序并下载新内容。在运行应用程序或与对等设备进行通信之前,该移动设备可被配置为检查移动设备和/或对等设备的能量和数据预算以及环境状况,以确保高质量用户体验。
Description
本申请是国际申请日为2015年5月7日、国家申请号为201580027844.8、发明名称为“基于对等事件数据来对移动设备进行动态调整”的进入中国国家阶段的PCT申请的分案申请。
技术领域
本公开总体涉及基于系统事件管理系统资源。
背景技术
移动计算设备典型地靠电池工作。一些移动计算设备可通过蜂窝数据和/或Wi-Fi网络连接无线访问网络资源。这些移动设备通常受到电池容量和/或蜂窝数据用量限制的约束。
一些移动计算设备允许用户运行从网络资源访问数据的应用程序。用户典型地调用应用程序并且随后必须等待应用程序从网络资源获取数据使得应用程序能呈现当前更新的内容。
发明内容
在一些具体实施中,移动设备可被配置为监测环境、系统和用户事件。移动设备可被配置为检测可触发对系统设置的调整的一个或多个事件的发生。
在一些具体实施中,移动设备可被配置有预定义和/或动态定义的属性。属性可由系统用来跟踪系统事件。属性事件可被存储并且稍后用于预测未来发生的属性事件。存储的属性事件可由系统用来对有关移动设备执行的处理作出决定。属性可与允许预算资源支持系统上的未来事件或活动的预算相关联。
在一些具体实施中,运行在移动设备上的各种应用程序、功能和进程可提交属性事件。应用程序、功能和进程可稍后基于提交的事件请求预报。应用程序、功能和进程可基于与属性相关联的预算以及与报告的事件相关联的成本执行预算。应用程序、功能和进程例如可与移动设备的操作系统或第三方应用程序相关联。
在一些具体实施中,移动设备可被配置为使得经常调用的应用程序保持为最新的。移动设备可保持对用户调用应用程序时的跟踪。基于调用信息,移动设备可预报在一天中应用程序何时被调用。移动设备随后可事先启动应用程序和下载更新使得用户可调用应用程序并查看当前更新的内容而不必等待应用程序下载更新的内容。
在一些具体实施中,移动设备可接收与应用程序相关联的指示新内容可用于应用程序下载的推送通知。移动设备可在后台启动与推送通知相关联的应用程序并下载新内容。在内容被下载之后,移动设备可呈现指示用户接收到推送通知的图形界面。用户随后可调用应用程序并查看更新内容。
在一些具体实施中,移动设备可被配置为针对移动设备上的应用程序执行进程下载和/或内容的上载。例如,专用进程可被配置在移动设备上用于针对移动设备上的应用程序下载和/或上载内容。在正执行上载/下载时,可暂停或终止应用程序。当上载/下载完成时,可调用应用程序。
在一些具体实施中,在运行应用程序或访问网络界面之前,移动设备可被配置为检查电池电力和蜂窝数据使用预算以确保有足够电力和数据可用于用户调用操作。在后台启动应用程序之前,移动设备可检查使用统计值以确定应用程序是否有可能在不久的将来由用户调用。
在一些具体实施中,属性事件数据可在同一用户所拥有的移动设备之间共享。移动设备可从对等设备接收事件数据并且基于接收的事件数据web作出有关涉及对等设备的交互或操作的决定。事件数据可作为预报值、统计值和/或原始(例如,未处理的)事件数据来共享。移动设备例如可基于接收的事件数据来确定是否与对等设备进行通信。
特定具体实施提供了至少以下优点:可通过响应于检测事件动态调整移动设备的部件节省电池电力。通过预期用户将何时调用应用程序和下载内容使得用户将在调用应用程序时查看更新的内容,可改善用户体验。
在下面的附图和具体实施方式中示出了一种或多种具体实施的细节。其他特征、方面和潜在优点将在具体实施方式和附图以及权利要求中显而易见。
附图说明
图1示出了配置为执行移动设备的动态调整的移动设备。
图2示出了用于调用启发式进程的示例性进程。
图3示出了用于使用启发式进程调整移动设备的设置的进程。
图4示出了用于执行应用程序的后台获取更新的示例性系统。
图5示出了用于针对移动设备100上的应用程序确定用户调用概率的对等预报。
图6是用于预测性地启动应用程序来执行后台更新的示例性进程的流程图。
图7是用于确定何时启动移动设备上的应用程序的示例性进程的流程图。
图8是示出了用于趋势变化表中的条目的状态转换的流程图。
图9是示出用于将推送通知提供给移动设备的系统的框图。
图10是用于在推送通知服务器执行非唤醒推送的示例性进程的流程图。
图11是用于响应于低优先级推送通知执行应用程序的后台更新的示例性进程的流程图。
图12是用于响应于高优先级推送通知执行应用程序的后台更新的示例性进程的流程图。
图13是用于在移动设备上执行数据的后台下载和/或上载的示例性系统的框图。
图14是用于执行后台下载和上载的示例性进程的流程图。
图15示出了用于针对移动设备上的应用程序启用和/或禁用后台更新的示例性图形用户界面(GUI)。
图16示出了用于在对等设备之间共享数据的示例性系统。
图17示出了用于在对等设备之间共享数据的示例性进程。
图18是一个可实现图1-图17的特征和进程的示例性计算设备的框图。
各附图中的类似参考符号表示类似的元件。
具体实施方式
概述
本文描述了一种用于基于各种系统事件启用对移动设备的调整以便于在电池寿命、电力需求、热管理和性能之间的折中的系统架构。该系统提供从系统事件学习的基本事件采集架构和一组启发式进程以最大化电池寿命而不对用户体验造成明显降级。该系统监测系统定义和客户端定义的属性并且可使用系统定义和客户端定义的属性来预测或预报未来事件的发生。该系统可基于动态采集的统计值和/或明确指定的用户意图预期系统的未来行为以及对用于设备性能的期待。该系统可确定设置哪些硬件和软件控制参数以及将参数设置为哪些值从而针对预期的系统行为改善用户体验。该系统在扩展可用于移动设备的系统和网络资源时权衡系统监测和硬件控制以实现用户体验的整体改进。因此,该系统可最大化系统和网络资源同时使得对用户体验的影响最小化。
数据采集-以用户为中心的统计值
图1示出了配置为执行移动设备100的动态调整的示例性移动设备100。在一些具体实施中,移动设备100可包括采集有关设备状况、网络状况、系统服务(例如,守护进程)和用户行为的事件的采样守护进程102。例如,采样守护进程102可采集有关应用程序、传感器和移动设备100接收的用户输入的统计值并且将统计值存储在事件数据存储装置104中。可由运行在移动设备100上的各种客户端(例如,应用程序、实体、功能、第三方应用程序等)使用报告为事件的预定义或客户端定义的属性,将统计值报告给采样守护进程102。
数据采集-事件和属性
在一些具体实施中,移动设备100可配置具有用于采集系统和/或应用程序事件的框架。例如,移动设备100可配置具有允许移动设备100的各种应用程序、实体和其他部件将事件提交到采样守护进程102用于稍后统计分析的应用编程界面(API)。
在一些具体实施中,采样守护进程102在事件数据存储装置104中记录的每个事件可包括属性名(例如,“bundleId”)、属性值(例如,“联系人”)、匿名信标信息、匿名位置信息、日期信息(例如,事件的GMT日期)、时间信息(例如,事件的当地24小时时间)、网络质量信息、处理器使用度量、盘输入/输出度量、当前用户的标识和/或事件类型(例如,启动、停止、发生过)。例如,属性名可识别与事件相关联的属性类型。属性名例如可用来标识采样守护进程102跟踪的特定度量。属性值可为与属性相关联的值(例如,字符串、整型、浮点)。匿名信标信息可指示哪些无线信标(例如,蓝牙、蓝牙低功耗、Wi-Fi等)落在移动设备范围内而不用将信标信息绑定或关联到用户或设备。类似地,匿名位置信息可识别移动设备的位置而不用将位置信息绑定或关联到用户或设备。例如,位置信息可使用在移动设备100上配置的各种收发器从卫星数据(例如,全球定位卫星系统)、蜂窝数据、Wi-Fi数据、蓝牙数据得出。网络质量信息可指示如在事件发生时由移动设备100所检测的移动设备的网络(例如,Wi-Fi、蜂窝、卫星等)连接的质量。
在一些具体实施中,每个事件的事件数据可指示事件发生、启动或停止。例如,可对指示用于同一属性的启动事件和停止事件的针对该属性的成对事件执行时间记账(例如,持续时间记账)。例如,采样守护进程102可接收用于具有值“联系人”的属性“bundleId”的启动事件。稍后,采样守护进程102可接收用于具有值“联系人”的属性“bundleId”的停止事件。采样守护进程102可将启动事件的时间与停止事件的时间进行比较以确定“联系人”应用程序多长时间处于活动。在一些具体实施中,不进行时间记账的事件可被记录为点事件(例如,单次出现)。例如,与事件发生时指定瞬时电池水平的“batteryLevel”系统属性相关联的事件可仅被记录为事件的发生。
下表1提供采样守护进程102在事件数据存储装置104中记录的属性事件条目的示例。第一条目记录指示“联系人”应用程序已由用户“Fred”调用的“bundleId”事件。该“bundleId”事件为指示Fred已开始使用联系人应用程序的启动事件。第二条目为指示移动设备100的电池水平为46%的“batteryLevel”事件,该事件为发生类事件(例如,单点事件)。第三条目为与值“George”相关联的“personName”事件。“personName”事件用来记录用户Fred已经访问联系人应用程序中联系人"George"的联系人信息的事实,这属于发生类事件。第四条目记录指示“联系人”应用程序已由用户“Fred”关闭或隐藏的“bundleId”事件。该bundleId事件为指示Fred已停止使用联系人应用程序的停止事件。通过记录用于“bundleID”属性的启动和停止事件,采样守护进程102可基于与启动和停止事件对应的时间戳确定用户Fred已在2014年5月12日使用联系人应用程序8分钟。该属性事件信息例如可用来预报有关移动设备100上的应用程序以及尤其相对于联系人应用程序的用户活动。
表格1
预定义属性
在一些具体实施中,可使用公知或预定义属性将事件数据提交到采样守护进程102。公知或预定义属性可为可由移动设备100的各种应用程序、实体、功能或其他部件用来将事件数据提交到采样守护进程102的通用系统属性。尽管预定义属性定义(例如,属性名、相关联值的数据类型等),但是根据事件不同分配给预定义属性的值也可不同。例如,移动设备100可被配置有用于识别应用程序的预定义属性“bundleId”和用于识别感兴趣的人的“personName”。分配给“bundleId”的值可基于在移动设备100上处于活动的那些应用程序而变化。分配给“personName”的值可基于用户输入而变化。例如,如果用户选择来自“George”的电子邮件消息,则“personName”属性值可设为“George”。如果用户选择与“鲍勃”相关联的联系人条目,则“personName”属性值可设为“鲍勃”。当移动设备100的应用程序、实体、功能或其他部件使用预定义属性将事件提交到采样守护进程102时,应用程序、实体、功能或其他部件可指定该值与用于该事件的预定义属性相关联。在以下段落描述了预定义或公知的系统事件的示例。
在一些具体实施中,移动设备100可被配置有为移动设备100上安装的应用程序(例如,应用程序包)指定名称或标识符的预定义属性(例如,“system.bundleId”)。当启用应用程序时,应用程序管理器106(例如,负责启动应用程序)可使用采样守护进程102的API将应用程序的标识符或名称(例如,联系人应用程序的“联系人”)提交作为“system.bundleId”系统属性的值。采样守护进程102可例如将“联系人”应用程序启动的发生连同其他事件数据作为事件记录在事件数据存储装置104中,如上所述。另选地,应用程序可使用采样守护进程102的API来指示分别对应于应用程序“联系人”被调用以及应用程序被隐藏或关闭时的启动和停止事件。例如,“bundleId”属性可用来将应用程序启动事件记录在移动设备100上。“bundleId”属性可用来将应用程序终止事件记录在移动设备100上。通过指定与“bundleId”属性相关联的启动和停止事件而非仅仅事件的发生,采样守护进程102可确定移动设备100的用户使用“联系人”应用程序多长时间。
在一些具体实施中,移动设备100可被配置有指定移动设备100的用户或者对移动设备100的用户感兴趣的人的名称或标识符的预定义属性(例如,“system.personName”)。例如,当登录、唤醒或以另外方式访问移动设备100时,可生成与“personName”属性相关联的、识别移动设备100的当前用户的事件并且提交到采样守护进程102。当用户访问与另一人相关联的数据时,可生成将其他人识别为对用户感兴趣的人的“personName”属性事件并且提交到采样守护进程102。
在一些具体实施中,移动设备100可被配置有指示移动设备100的位置的预定义属性(例如,“system.anonymizedLocation”)。例如,移动设备100可将与“anonymizedLocation”属性相关联的、在事件生成时指定移动设备100的位置的事件并且提交到采样守护进程102。位置数据可被匿名使得该位置稍后不会被绑定或关联到特定用户或设备。例如,可无论何时用户使用移动设备100的基于位置的服务时生成并存储“anonymizedLocation”属性事件。
在一些具体实施中,移动设备100可被配置有指示移动设备100的飞行模式打开或关闭的预定义属性(例如,“system.airplaneMode”)。例如,当用户打开或关闭飞行模式时,移动设备100可生成指示事件发生时飞行模式状态的事件并提交到采样守护进程102。例如,“airplaneMode”属性的值可在飞行模式打开时设为“真”(例如,1)而在飞行模式关闭时设为假(例如,0)。采样守护进程102反过来可将包括“airplaneMode”属性值的“airplaneMode”事件存储在事件数据存储装置104中。
在一些具体实施中,移动设备100可被配置具有指示移动设备100的电力线缆插入或未插入的预定义属性(例如,system.cablePlugin)。例如,当移动设备100检测电力线缆已被拔出时,移动设备100可生成指示“cablePlugin”属性值为假(例如,0)的事件。当移动设备100检测到电力线缆已被插入到移动设备100时,移动设备100可生成指示“cablePlugin”属性为真(例如,1)的事件。移动设备100可将“cablePlugin”事件提交到采样守护进程102用于存储在事件数据存储装置104中。
在一些具体实施中,移动设备100可被配置有指示移动设备100的显示器锁定或解除锁定的预定义属性(例如,“system.screenLock”)。例如,移动设备100可检测移动设备100的显示器何时被锁定(例如,由系统或用户)或解除锁定(例如,由用户)。在检测到显示器的锁定或解除锁定时,移动设备100可生成包括“screenLock”属性的事件并且将用于该事件的“screenLock”属性值设为真(例如,锁定,整数1)或假(例如,解除锁定,整数0)以指示移动设备100的显示器被锁定或解除锁定。移动设备100可将“screenLock”事件提交到采样守护进程102用于存储在事件数据存储装置104中。
在一些具体实施中,移动设备100可被配置有指示移动设备100是否处于睡眠模式的预定义属性(例如,“system.sleepWake”)。例如,移动设备100可检测移动设备100何时进入睡眠模式。移动设备100可检测移动设备100何时退出睡眠模式(例如,唤醒)。在检测进入或退出睡眠模式时,移动设备可生成包括“sleepWake”属性并且把属性值设为真或假(例如,分别为整型1或0)以指示发生“sleepWake”事件时移动设备100的睡眠模式状态的事件。移动设备100可将“sleepWake”事件提交到采样守护进程102用于存储在事件数据存储装置104中。
在一些具体实施中,移动设备100可被配置有指示移动设备100的显示器是否点亮的预定义属性(例如,“system.backlight”)。“背光”属性可被分配指示背光的强度或水平的值。例如,移动设备100的用户可调整移动设备100的显示器的光线(背光)的强度。用户可在环境光线明亮时提高背光的强度。用户可在环境光线黑暗时降低背光的强度。在检测到背光设置的变化时,移动设备100可生成包括“backlight”属性以及将属性值设为调整的背光设置(例如,强度水平)的事件。移动设备100可将“backlight”变化事件提交到采样守护进程102用于存储在事件数据存储装置104中。
在一些具体实施中,移动设备100可被配置有指示如由移动设备100的环境光线传感器检测的环境光线强度值的预定义属性(例如,“system.ALS”)。“ALS”属性可被分配指示移动设备100周围的环境光线的强度或水平的值。例如,移动设备100的环境光线传感器可检测环境光线强度的变化。移动设备100可确定强度变化超过某个阈值。在检测到超过阈值的环境光线变化时,移动设备100可生成包括“ALS”属性以及将属性值设为检测的环境光线强度值的事件。移动设备100可将“ALS”变化事件提交到采样守护进程102用于存储在事件数据存储装置104中。
在一些具体实施中,移动设备100可被配置有指示移动设备100的接近传感器何时检测到移动设备100的显示器靠近对象(例如,用户面部,桌上,等)的预定义属性(例如,“system.proximity”)。“proximity”属性可被分配指示移动设备的显示器是否邻近对象的值(例如,真,假,0,1)。例如,移动设备100的接近传感器可检测接近度的变化。在检测到接近度变化时,移动设备100可生成包括“proximity”属性并将属性值在移动设备100邻近对象时设为真(例如,1)以及在移动设备100不邻近对象时设为假(例如,0)的事件。移动设备100可将“proximity”变化事件提交到采样守护进程102用于存储在事件数据存储装置104中。
在一些具体实施中,移动设备100可被配置有指示移动设备100检测到的运动类型的预定义属性(例如,“system.motionState”)。“motionState”属性可被分配指示移动设备是否处于静止、移动、运行、驾驶、步行等的值。例如,移动设备100的运动传感器(例如,加速度计)可检测移动设备100的移动。移动设备100可基于在检测的移动中检测到的运动模式分类检测到的移动。运动模式可被分类为诸如在用户处于静止、移动、跑动、驾驶、步行等时的用户活动。在检测到运动的变化时,移动设备100可生成包括“motionState”属性以及将属性值设为检测到的运动类型(例如,静止、跑动、步行、驾驶等)的事件。移动设备100可将“motionState”事件提交到采样守护进程102用于存储在事件数据存储装置104中。
在一些具体实施中,移动设备100可被配置有指示移动设备100检测到的网络连接的质量的预定义属性(例如,“system.networkQuality”)。“networkQuality”属性可被分配指示在n秒(例如,1毫秒,2秒等)的时间段的网络吞吐量值的值。例如,移动设备100可连接到数据网络(例如,蜂窝数据、卫星数据、Wi-Fi、互联网等)。移动设备100可在一时间段(例如,5秒)上监测网络连接的数据吞吐量。移动设备可计算每秒传输的数据量(例如,比特/秒、字节/秒等)。在检测到吞吐量的变化或者创建新网络连接时,移动设备100可生成包括“networkQuality”属性以及将属性值设为计算的吞吐量值的事件。移动设备100可将“networkQuality”事件提交到采样守护进程102用于存储在事件数据存储装置104中。
在一些具体实施中,移动设备100可被配置有指示移动设备100的内部电池的瞬时电量水平的预定义属性(例如,“system.batteryLevel”)。“batteryLevel”属性可被分配指示电池的电量水平(例如,百分比)的值。例如,移动设备100可周期性地(例如,每5秒、每分钟、每15分钟等)确定电池的电量水平并且生成记录电池的电量水平的“batteryLevel”事件。移动设备100可监测电池电量水平并且确定电量水平何时变化阈值量并且生成记录电池的电量水平的“batteryLevel”事件。移动设备100可将“batteryLevel”事件提交到采样守护进程102用于存储在事件数据存储装置104中。
在一些具体实施中,移动设备100可被配置有指示移动设备100的热水平的预定义属性(例如,“system.thermalLevel”)。例如,移动设备100的热水平可为移动设备的当前工作温度(例如,摄氏度)。移动设备100的热水平可为表示温度值范围的水平(例如,高、中、低、正常、异常等)。例如,移动设备100可被配置有用于监测移动设备100的热状态的设施或功能。在检测到温度变化或热水平变化时,移动设备100的热设施可生成包括“thermalLevel”属性以及将属性值设为工作温度或当前热水平的事件。移动设备100可将“thermalLevel”事件提交到采样守护进程102用于存储在事件数据存储装置104中。
在一些具体实施中,移动设备100可被配置有指示几秒(例如,2毫秒、3秒等)时间段内移动设备100的能量使用量的预定义属性(例如,“system.energy”)。例如,当用户调用移动设备100的功能(例如,应用程序调用、显示器亮度、数据传输等)时,移动设备100可监测该功能正运行的时间段内的能量使用量从而估计每个活动或功能使用的能量。移动设备100随后可生成包括“energy”属性以及将属性值设为计算的平均能量使用量的事件。移动设备100可将“energy”事件提交到采样守护进程102用于存储在事件数据存储装置104中。
在一些具体实施中,移动设备100可被配置有指示几秒(例如,2毫秒、3秒等)时间段内移动设备100的网络数据使用量的预定义属性(例如,“system.networkBytes”)。例如,当用户调用功能或者发起需要通过移动设备100的网络连接传输数据的操作时,移动设备100可监测一段时间内的网络数据使用量以估计每个活动或功能使用或传输的网络数据量。移动设备100随后可生成包括“networkBytes”属性以及将属性值设为计算的平均网络数据使用量的事件。移动设备100可将“networkBytes”事件提交到采样守护进程102用于存储在事件数据存储装置104中。
其他预定义属性可包括具有指示移动设备100是否在给电池充电的真/假(例如,1/0)属性值的“system.chargingStatus”属性,具有指示当前电池电量(例如,mAh,与batteryLevel成比例)的属性值的“system.batteryCapacity”属性,以及具有跟踪对等设备的出现的设备标识符(例如,字符串)属性值的“system.devicePresence”属性。例如,“devicePresence”属性可用于预报当调度对等数据共享时对等设备的出现。
定制属性
在一些具体实施中,客户端专用属性可由采样守护进程102的客户端动态定义。例如,不使用移动设备100上预定义(例如,在采样守护进程102或操作系统中)和配置的属性,客户端(例如,第三方应用程序)可动态定义其自身事件属性。例如,邮件应用程序可动态(例如,在运行时)创建“mailbox”属性。邮件应用程序(“mailapp”)可使用采样守护进程102的API定义属性名(例如,“mailapp.mailbox”)和属性值类型(例如,字符串、整型、浮点)。一旦客户端已创建(注册)新定制属性,客户端可使用该属性生成将要存储在事件数据存储装置104中的事件。例如,mailapp可使用“mailbox”属性报告用户正访问邮件应用程序中的哪个邮箱。如果用户正访问“工作”邮箱,则mailapp可使用“mailapp.mailbox”属性创建事件并且将属性值设为“工作”来记录用户正访问“工作”邮箱。采样守护进程102和客户端例如随后可使用存储的邮箱事件信息来预测未来用户可能何时访问“工作”邮箱。
在一些具体实施中,当从移动设备100去除(例如,删除、卸载)客户端应用时,可从移动设备100删除客户端应用创建的属性。而且,当去除客户端应用时,可删除与客户端应用相关联的事件数据。例如,如果从移动设备100删除mailapp,则可从移动设备100删除属性“mailapp.mailbox”连同与该mailapp相关联的所有事件数据。
示例性事件生成客户端
在一些具体实施中,采样守护进程102可从应用程序管理器进程106接收应用程序事件(例如,“system.bundleId”事件)。例如,应用程序管理器106可为启动、停止和监测移动设备100上的应用程序(例如,应用程序108)的进程。在一些具体实施中,应用程序管理器106可将运行在移动设备100上的应用程序的启动和停止时间(例如,“bundleId”启动和停止事件)报告给采样守护进程102。例如,当用户调用或启动应用程序时,应用程序管理器106可通过提交指定应用程序的名称或标识符的用于调用应用程序的“bundleId”启动事件来通知采样守护进程102应用程序调用。在一些具体实施中,应用程序管理器106可指示采样守护进程102响应于推送通知、用户调用或预测或预报的用户应用程序调用发起应用程序启动。当应用程序终止时,应用程序管理器106可通过提交指定应用程序的名称或标识符的用于该应用程序的“bundleId”停止事件来通知采样守护进程102应用程序不再运行。
在一些具体实施中,采样守护进程102可使用应用程序启动和结束事件(例如,“bundleId”属性事件)生成每个应用程序的使用时间历史。例如,每个应用程序的使用时间历史可包括针对应用程序的一次执行自应用程序的上一次执行以及执行持续时间经历的时间量。采样守护进程102可保持用户调用应用程序启动和/或系统启动(例如,自动启动)应用程序的独立历史。因此,采样守护进程102可为运行在移动设备100上的所有应用程序保持使用统计值。
在一些具体实施中,采样守护进程102可从电力监测器进程108接收电力事件。例如,电力监测器108可监测移动设备100的电池容量、放电、使用和充电特征。电力监测器108可确定移动设备100何时插入到外部电源以及移动设备100何时处于电池供电。电力监测器108可通知采样守护进程102移动设备100何时插入到外部电源。例如,电力监测器108可在电力监测器检测到移动设备100当前插入到外部电源时向采样守护进程102发送具有1(例如,真)的“cablePlugin”属性值的“cablePlugin”事件。该事件可包括连接外部电源时的电池电量。电力监测器108可向采样守护进程102发送“能量”属性事件来报告电池使用量。
在一些具体实施中,电力监测器108可通知采样守护进程102移动设备100何时从外部电源断开连接。例如,电力监测器108可在电力监测器检测到移动设备100从外部电源断开连接时向采样守护进程102发送具有0(例如,假)的“cablePlugin”属性值的“cablePlugin”事件。该消息可包括断开外部电源连接时的电池电量。因此,采样守护进程102可保持描述移动设备100的电池的充电分布(例如,随时间分布的电量)的统计值。充电分布统计值可包括自上次充电的时间量(例如,自插入到外部电源起经过的时间)以及得益于充电的电池电量变化(例如,充电开始水平、充电结束水平)。
在一些具体实施中,电力监测器108可通知采样守护进程102一天内的电池电量变化。例如,电力监测器108可在应用程序启动和停止时得到通知,并且响应于通知,确定在该时间段内耗掉的电池电力的量以及电池中剩余的电量并且将该信息传输至采样守护进程102。例如,电力监测器108可向采样守护进程102发送“system.energy”事件来指示在应用程序处于活动的时间段内消耗的能量。
在一些具体实施中,采样守护进程102可从热守护进程110接收设备温度统计值。例如,热守护进程110可使用一个或多个温度传感器监测移动设备100的工作温度状况。热守护进程110可被配置为周期性地将温度变化报告给采样守护进程102。例如,热守护进程110可每5秒确定移动设备100的工作温度并且将移动设备100的温度或热水平报告给采样守护进程102。例如,热守护进程110可将“system.thermalLevel”事件发送给采样守护进程102以报告移动设备100的当前工作温度或热水平。采样守护进程102可将报告的温度存储在事件数据存储装置104中。
在一些具体实施中,采样守护进程102可从设备设置进程112接收设备设置统计值。例如,设备设置进程112可为移动设备100的操作系统的功能或进程。设备设置进程112例如可接收用户输入来调整各种设备设置,诸如打开/关闭飞行模式、打开/关闭Wi-Fi、打开/关闭漫游等。设备设置进程112可将设备设置的变化报告给采样守护进程102。每个设备设置可具有对应的预定义事件属性。例如,设备设置进程112可在用户在移动设备100上打开或关闭飞行模式时向采样守护进程102发送“system.airplaneMode”事件。采样守护进程102可基于接收的事件和属性值生成并存储用于设备设置的统计值。例如,对于每次启用(或禁用)设置,采样守护进程102可存储指示自先前启用该设置起经过的时间量以及启用该设置的时间量(例如,持续时间)的数据。
类似地,在一些具体实施中,采样守护进程102可在其他事件发生时从其他移动设备100的部件(例如,设备传感器114)接收通知。例如,采样守护进程102可在移动设备的屏幕打开或关闭(例如,“system.backlight”事件)时、在移动设备100把持靠近用户面部(例如,“system.proximity”事件)时、在检测到小区塔不可触及时、在基带处理器在搜索模式(例如,“system.btlescan”事件)时、在移动设备100检测到用户正步行、跑动和/或驾驶(例如,“system.motionState”事件)时接收通知。在每种情况下,采样守护进程102可在事件开始和结束时接收通知。在每种情况下,采样守护进程102可生成并存储指示自上次检测到该事件起经过的时间量以及事件的持续时间的统计值。采样守护进程102可接收其他事件通知并生成其他统计值,如针对特定使用情况和场景以下进一步所述。
应用程序事件
在一些具体实施中,采样守护进程102可从移动设备100上的应用程序接收事件信息。例如,移动设备100上的应用程序可生成包括对采样守护进程102的预定义或动态定义的属性来跟踪各种专用事件的事件。例如,采样守护进程102可从日历应用程序116接收日历事件(例如,包括“calendar.appoinment”、“calendar.meeting”或“calendar.reminder”属性等)。日历事件可包括具有指定与各种日历事件或功能相关联的位置、时间或其他数据的值的“calendar.appointment”、“calendar.meeting”或“calendar.reminder”属性。采样守护进程102例如可存储属性名、属性持续时间和/或属性被调度发生的时间。在一些具体实施中,采样守护进程102可从时钟应用程序118接收时钟事件(例如,包括“clock.alarm”事件)。例如,采样守护进程102可存储属性名(例如,“clock.alarm”)和指示闹钟被调度发生的时间的值。采样守护进程102可从其他应用程序(例如,媒体应用程序、存折应用程序等)接收事件信息,如下文进一步所述。
应用程序统计值
在一些具体实施中,采样守护进程102可跨应用程序启动事件采集应用程序统计值。例如,采样守护进程102可跨应用程序的许多调用为每个应用程序采集统计值(例如,事件、“bundleId”属性值)。例如,每个应用程序可用其可执行文件系统路径的哈希值和可执行内容的哈希值来标识,使得相同应用程序的不同版本可处理为不同应用程序。应用程序哈希值例如可在“bundleId”事件中作为“bundleId”属性的值提交到采样守护进程102。
在一些具体实施中,采样守护进程102可保持针对每个应用程序跟踪后台任务完成声明事件的计数器。例如,每当应用程序作为后台任务(例如,在前台和/或用户当前使用中不可见)运行时,应用程序或应用程序管理器106可通知采样守护进程102应用程序何时终止或暂停并且采样守护进程102可使得计数器递增。采样守护进程102可保持跟踪跨应用程序启动的、应用程序已在后台运行的累积秒数的计数器。例如,采样守护进程102可分析“bundleId”启动和停止事件以确定应用程序何时启动和停止并且使用启动和停止事件的时间戳确定应用程序运行的时间长度。在一些具体实施中,采样守护进程102可保持对数据连接数量计数,跟踪网络数据通信量(例如,以字节计),跟踪文件系统操作的持续时间和大小和/或跟踪与每个应用程序相关联的线程数量的独立计数器。采样守护进程102例如可保持跨应用程序启动应用程序保持活动的累积时间量的计数。这些仅仅是一些各种应用程序统计值的示例,可基于采样守护进程102接收和存储在事件数据存储装置104中的事件和属性数据由采样守护进程102生成应用程序统计值。可生成或采集其他统计值,如下文进一步所述。
启发式进程
在一些具体实施中,移动设备100可被配置有可基于采样守护进程102检测到的事件调整设备部件的设置的启发式进程。例如,启发式进程120可包括配置(例如,编程)为响应于一个或多个触发事件和/或基于采样守护进程102采集或生成的统计值调整各种系统设置(例如,CPU电力、基带处理器电力、显示器亮度等)的一个或多个进程。
在一些具体实施中,启发式进程120可向采样守护进程102注册以在满足预定义的一组准则(例如,一些触发事件的发生)时被调用或激活。触发事件可包括调用媒体播放器应用程序(例如,“bundleId”事件)或者检测用户开始步行、跑动、驾驶等(例如,“motionState”事件)。触发事件可一般化为在事件数据104中或由采样守护进程102检测到一些特性、数据、统计值、事件、属性、属性值等时调用启发式进程120。例如,启发式进程120可在采样守护进程102接收应用程序启动通知(例如,指定专用应用程序的“bundleId”启动事件)或温度(例如,“thermalLevel”事件)高于某一阈值时被调用。启发式进程120可在采样守护进程102接收与特定属性或属性值相关联的事件时被调用。启发式进程120可注册为在单个事件发生或观测到统计值时被调用。启发式进程120可注册为在观测或检测到事件、数据、属性、属性值和/或统计值的组合时被调用。启发式进程120可响应于特定用户输入(例如,“airplaneMode”事件、“sleepWake”事件等)被触发或调用。当采样进程102检测到启发式进程120注册的事件时,采样进程102可调用启发式进程120。
在一些具体实施中,当调用启发式进程120时,启发式进程120可与采样守护进程102进行通信,以从事件数据存储装置104获取事件数据。启发式进程120可处理启发式进程120自身采集的事件数据和/或其他数据以确定如何调整系统设置来改善移动设备100的性能,改善使用移动设备100时的用户体验和/或避免移动设备100的未来问题。
在一些具体实施中,启发式进程120可web作出可使得移动设备100的各种设备部件122的设置变化的设置建议。例如,设备部件可包括CPU、GPU、基带处理器、显示器、GPS、蓝牙、Wi-Fi、振动马达和其他部件。
在一些具体实施中,启发式进程120可对控制复用器124作出设置建议。例如,控制复用器124可为在启发式进程120提供的部件设置之间进行仲裁的进程以及影响或改变移动设备100的部件的设置的移动设备100的其他进程和/或功能。例如,热守护进程110可为配置为基于检测到移动设备100处于热事件中(例如,高于阈值温度)对CPU电力、显示亮度、基带处理器电力和其他部件设置web作出调整的启发式进程。然而,启发式进程120也可被配置为对CPU电力、显示亮度、基带处理器电力和其他部件设置web作出调整。因此,在一些具体实施中,启发式进程120和热守护进程110可对控制复用器124web作出设置调整建议并且控制复用器124可确定web作出哪些设置调整。例如,控制复用器124可对进程做优先级处理并且基于推荐进程的优先级执行调整。因此,如果热守护进程110为比启发式进程120优先级高的进程,则控制复用器124可根据热守护进程110而不是启发式进程120的建议调整CPU、显示器、基带处理器等的设置。
在一些具体实施中,移动设备100可配置有多个启发式进程120。启发式进程120可在空中配置或重新配置。例如,每个启发式进程120的参数(例如,触发、阈值、准则和输出)可通过网络(例如,蜂窝数据连接、Wi-Fi连接等)被设定或调整。在一些具体实施中,可将新启发式进程120添加到移动设备100。例如,随时间推移,触发事件、统计数据和设备设置之间的新关联性可由系统开发者确定。在识别这些新关联性时,可开发新启发式进程120来调整系统设置以考虑新确定的关系。在一些具体实施中,可通过网络将新启发式进程120添加到移动设备100。例如,新启发式进程120可在空中(例如,蜂窝数据连接、Wi-Fi连接等)下载或安装在移动设备100上。
示例性启发式进程
在一些具体实施中,启发式进程120可被配置为调整移动设备100的系统设置以防止移动设备100在用户口袋中过热。例如,这种口袋变热启发式进程可被配置为向采样守护进程102注册以在移动设备的显示器关闭(例如,“system.backlight”事件具有0/假的属性值)和移动设备100不显示任何娱乐媒体(例如,音乐、电影、视频等)时被调用。例如,当被调用时,口袋变热启发式进程可推荐减小CPU电力和GPU电力以降低移动设备100的工作温度。
在一些具体实施中,启发式进程120可被配置为在移动设备的显示器未被使用(例如,“system.backlight”事件具有0/假的属性值)时调整位置精度。例如,如果移动设备的显示器未被使用(例如,显示器关闭,如由上述的“backlight”属性事件所指示),则移动设备100无法为用户显示地图信息或方向。因此,用户不可能使用移动设备100的位置服务并且可调整位置服务(例如,GPS定位、Wi-Fi定位、蜂窝定位等)以使用较少电力。位置精度启发式进程可向采样守护进程102注册以在移动设备的显示器关闭时被调用。当被调用时,启发式进程可调整GPS处理器、Wi-Fi收发器、蜂窝收发器、基带处理器的电力水平或者终止用来确定移动设备100的位置的进程从而节省移动设备100的能量资源。
在一些具体实施中,启发式进程120可被配置为响应于用户行为调整移动设备的环境光线传感器的设置。例如,该用户自适应环境光传感器(ALS)启发式进程可在采样守护进程102接收到指示环境光传感器检测到移动设备100周围的环境光的变化,环境光传感器系统调整显示器的亮度和/或用户提供输入来调整显示器的亮度的数据(例如,“ALS”属性事件)时由采样守护进程102调用。
当被调用时,用户自适应ALS启发式进程可相对于ALS显示器调整和用户发起的显示器调整从采样守护进程102请求另外的信息以确定是否存在指示ALS何时将显示器亮度调高或调低以及用户在相反方向调整显示器亮度的用户输入的模式(例如,“system.backlight”事件之后的“system.ALS”事件)。例如,用户可乘汽车或火车上班。在行驶中汽车灯会被打开和关闭。环境光传感器可检测环境光的变化并且当灯亮时增加显示器亮度。由于灯仅仅暂时点亮,所以用户可在在灯关闭时降低显示器亮度。用户输入的这种模式可被跟踪(例如,通过“backlight”属性事件)并且通过启发式进程与一天中的时间、日历和闹钟事件条目或行程模式相关联以确定响应于ALS显示器调整用户调整显示器亮度的情形或背景。一旦用户自适应ALS启发式进程确定输入和背景模式,则启发式进程可或多或少积极主动地调整ALS的设置。例如,可调整ALS以在确定的一天中的时间、日历或闹钟条目或行程模式期间或多或少频繁地检查环境光的水平并且相应地调整显示器亮度。
上述启发式进程为启发式进程的一些示例以及它们可如何在本文所述的系统中实现。随时间开发出的其他启发式进程可实现并添加到系统中。例如,另外的启发式进程可被配置或编程为响应于检测到与温度测量有关的事件或事件模式、用户输入、时钟事件(例如,闹钟)、日历事件和/或在移动设备上发生或检测到的其他事件调整移动设备的CPU、GPU、基带处理器或其他其他部件。
示例性启发式注册和调用进程
图2示出了用于调用启发式进程的示例性进程200。在步骤202处,可对采样守护进程102进行初始化。例如,可在移动设备100的启动期间对采样守护进程102进行初始化。
在步骤204处,采样守护进程102可在采样守护进程102的初始化期间调用在移动设备100上配置的启发式进程。例如,采样守护进程102可使每个启发式进程120在移动设备100上执行并且运行通过其初始化子例程。
在步骤206处,采样守护进程102可从每个启发式进程120接收事件注册消息。例如,在启发式进程120的初始化子例程期间,启发式进程120可向采样守护进程102发送指示哪些属性事件将触发对启发式进程120的调用的信息。采样守护进程102例如可将注册信息存储在数据库,诸如事件数据存储装置104中。注册信息可包括启发式进程的标识(例如,可执行名称、文件系统路径等)和事件准则(属性的标识、属性值、阈值、范围等)使得采样守护进程102可在检测到指定事件时调用启发式进程120。
在步骤208处,采样守护进程102可接收属性事件数据。例如,采样守护进程102可从包括应用程序管理器106、传感器114、日历116和时钟118的各种系统部件接收属性事件数据,如上所述。
在步骤210处,采样守护进程102可将接收到的属性事件数据与启发式注册数据进行比较。例如,在属性事件数据被报告给采样守护进程102时,采样守护进程102可将事件数据(例如,属性值)或从事件数据生成的统计值与从启发式进程120接收的注册信息进行比较。
在步骤212处,采样守护进程102可基于在步骤210处执行的比较调用启发式进程。例如,如果事件数据(例如,属性数据)和/或统计值满足启发式进程120的启发式注册数据中指定的准则,则采样守护进程102可调用启发式进程120。例如,如果事件数据和/或统计值数据跨过注册期间启发式进程针对事件指定的某个阈值,则启发式进程可由采样守护进程102调用。另选地,只有发生特定属性事件才使得调用启发式进程120。
图3示出了用于使用启发式进程120调整移动设备100的设置的进程300。在步骤302处,对启发式进程120进行初始化。例如,启发式进程120可由采样守护进程102调用使得启发式进程120可运行通过其初始化子例程运行。例如,可对调用进行参数化处理来指示在该调用期间启发式进程120将运行通过其初始化子例程。
在步骤304处,启发式进程120可针对系统事件向采样守护进程102注册。例如,在初始化期间,启发式进程120可向采样守护进程102发送包括事件标识、阈值、属性、属性值或用于调用启发式进程120的其他准则的消息。当事件发生和/或满足准则时,采样守护进程102可调用启发式进程120。
在步骤306处,启发式进程120可关闭或终止。例如,在注册准则满足用于启发式进程120之前系统不需要启发式进程120。因此,为了节省设备资源(例如,电池电力、处理电力等),启发式进程120被终止、关闭或暂停直到需要时为止(例如,采样守护进程102触发)。
在步骤308处,可重启启发式进程120。例如,采样守护进程102可在采样守护进程102确定满足在注册消息中启发式进程120指定的准则时调用启发式进程120。
在步骤310处,启发式进程120可从采样守护进程102获取事件数据。例如,一旦重启,启发式进程120可查询采样守护进程102用于另外的属性事件数据。启发式进程120可被配置为与其他系统资源、进程、传感器等交互来根据需要采集数据。
在步骤312处,启发式进程120可处理事件数据来确定部件设置。例如,启发式进程120可使用来自采样守护进程102的事件数据和/或统计值和/或从系统的其他部件采集的数据来确定如何调整移动设备100的各种部件的设置。例如,如果启发式进程120确定移动设备100太热,则启发式进程120可确定移动设备100的哪些电力设置将降低移动设备100的工作温度。
在步骤314处,启发式进程120可将确定的部件设置传输到控制复用器124。例如,控制复用器124可对从启发式进程120和其他系统部件(例如,热守护进程110)接收的设备设置建议进行仲裁。控制复用器124随后可根据接收的设置建议调整移动设备100的各种部件(例如,CPU、GPU、基带处理器、显示器等)。
预报事件
在一些具体实施中,采样守护进程102可使用事件数据存储装置104中存储的属性事件数据(例如,历史数据)来预测未来事件的发生。例如,可分析“bundleId”属性事件来预测用户将何时调用应用程序(例如,任何应用程序或专用应用程序)。可分析指定特定电子邮件文件夹(例如,设为“工作”文件夹的“mailbox”属性值)的“mailapp.mailbox”事件来预测用户将何时使用“mailapp”应用程序的特定电子邮件文件夹。
事件历史窗口规范
在一些具体实施中,可基于事件历史窗口规范生成事件预报。例如,窗口规范可由客户端生成来指定感兴趣的时间段、或感兴趣的复发时间段,客户端希望使得事件预报基于该窗口规范。窗口规范可包括四个分量:启动时间、结束时间、复发宽度和复发频率。启动时间可指示历史上窗口将启动的日期和/或时间。结束时间可指示历史上窗口将结束的日期和/或时间。复发宽度可指示客户端感兴趣的时间框(例如,始于启动时间的四个小时)。复发频率可指示时间框将始于启动时间重复的频率(例如,每8小时、每两天、每星期、每两个星期等)。
在一些具体实施中,只有在生成事件预报时才将分析在指定时间框内(例如,感兴趣的时间段)发生的事件。例如,如果当前日期为2014年5月13日,窗口规范可指定2014年5月11日中午12点为启动时间,5月12日中午12点为结束时间,复发宽度为1小时,以及复发频率为4小时。该窗口规范将使得采样守护进程102在每1小时框内(例如,感兴趣的时间段)分析事件数据,事件数据每4小时发生,始于2014年5月11日中午12点,结束于2014年5月12日中午12点(例如,框1:2014年5月11日中午12点到下午1点;框2:
2014年5月11日下午4点到5点;框3:2014年5月11日晚上8点到9点等)。在一些具体实施中,当未指定复发宽度时,将分析从启动时间到结束时间的整个时间段来预报事件。
在一些具体实施中,采样守护进程102可自动生成事件历史窗口规范。例如,采样守护进程102可识别事件数据存储装置104中存储的事件历史数据中的模式。如果客户端请求针对“bundleId”事件的预报但未提供窗口规范,则采样守护进程102例如可识别指示应用程序通常由用户在早上8点到9点,11点30到下午1点30以及晚上7点到11点调用的用于“bundleId”属性/事件的模式。采样守护进程102可自动生成包括那些时间段并且排除那天中的其他时间的窗口规范使得请求的预报将专注于与所请求属性有关的时间段。类似地,采样守护进程102可针对特定(例如,指定)属性值自动生成事件历史窗口规范。例如,如果客户端针对具有属性值“mailapp”的“bundleId”事件请求预报,则采样守护进程102可分析事件历史数据来识别与“mailapp”值有关的发生模式。如果“mailapp”“bundleId”属性值在每天早上10点、12点和下午5点记录在事件历史数据中,则采样守护进程102可生成指定围绕那天的那些时间的感兴趣的时间段的窗口规范。
临时预报
在一些具体实施中,可为属性或属性值生成临时预报。临时预报例如可指示与属性或属性值相关联的事件在一天中的什么时间有可能发生。例如,采样守护进程102的客户端可请求对上一星期(例如,过去的7天)“bundleId”属性(例如,应用程序启动)的临时预报。为了生成预报,一天24小时可被分成96个每个为15分钟长的时隙。对于过去七天中每一天的特定时隙(例如,下午1点到1点15分),采样守护进程102可确定“bundleId”事件是否发生并且生成该时隙的分数。如果“bundleId”事件发生在7天中第2天中的特定时隙期间,则“bundleId”事件将在特定时隙(例如,下午1点到1点15分)发生的概率(例如,分数)为0.29(例如,2除以7)。如果“bundleId”事件发生在7天中第4天中的不同时隙(例如,中午12点15分到12点30分)期间,则“bundleId”事件将在该时隙期间发生的概率(例如,分数)为0.57(例如,4除以7)。
类似地,客户端可针对特定属性值请求临时预报。例如,不同于针对“bundleId”属性(例如,“bundleId”事件)请求临时预报,客户端可针对“bundleId”属性值为“mailapp”的“bundleId”事件请求临时预报。因此,客户端可接收用户在一天中可能调用“mailapp”应用程序的时间(例如,15分钟时隙)的指示。
在一些具体实施中,可基于事件历史窗口规范生成临时预报。例如,如果客户端提供指定感兴趣的4小时时间段的窗口规范,则临时预报将仅生成落在感兴趣的4小时时间段内的15分钟时隙的可能性分数。例如,如果感兴趣的时间段对应于前3天中每一天的中午12点到下午4点,则将在感兴趣的4小时时间段内生成16个时隙并且将针对16个15分钟时隙的每一个生成分数。在指定的感兴趣的4小时时间段之外的时隙,将不生成分数。
对等预报
在一些具体实施中,采样守护进程102可为属性生成对等预报。例如,对等预报可针对相对于相同属性的所有值的感兴趣时间段期间发生(例如,出现)的属性指示值的相对可能性。例如,采样守护进程102的客户端可请求在如与该请求一起提交的窗口规范所指定的感兴趣的时间段(例如,上午11点到下午1点)上“bundleId”属性的对等预报。如果在感兴趣的时间段期间,具有属性值“邮件应用程序”、“联系人”、“日历”、“web浏览器”、“邮件应用程序”、“web浏览器”、“邮件应用程序”的“bundleId”事件发生,则“邮件应用程序”发生的相对可能性(即,分数)为0.43(例如,3/7),“web浏览器”发生的相对可能性为0.29(例如,2/7)以及“联系人”或“日历”发生的相对可能性为0.14(例如,1/7)。
在一些具体实施中,采样守护进程102的客户端可为属性请求对等预报。例如,如果客户端为属性请求对等预报而不为属性指定值,则采样守护进程102将在感兴趣的时间段内生成对等预报并且为属性的所有值返回各种概率分数。使用上述示例性对等预报,采样守护进程102将属性值和分数的列表返回到请求客户端,例如:“邮件应用程序”:0.43,“web浏览器”:0.29,“联系人”:0.14,“日历”:0.14。
在一些具体实施中,采样守护进程102的客户端可为属性值请求对等预报。例如,客户端为具有“邮件应用程序”的值的“bundleId”属性请求对等预报。采样守护进程102可根据客户端提供的窗口规范为“bundleId”属性生成对等预报,如上所述。例如,采样守护进程102可计算“邮件应用程序”发生的相对可能性(即,分数)为0.43(例如,3/7),“web浏览器”发生的相对可能性为0.29(例如,2/7)以及“联系人”或“日历”发生的相对可能性为0.14(例如,1/7)。采样守护进程102可将请求的“邮件应用程序”值的分数(例如,0.43)返回到客户端。如果未在如窗口规范指定的感兴趣的时间段中代表所请求值,则可将0值返回到客户端。
全景预报
在一些具体实施中,可生成全景预报来预测属性事件的发生。例如,上述的临时和对等预报使用针对单个属性或属性值的事件的相对发生频率来预测该属性的未来发生。该“频率”预报类型(例如,发生频率)仅使用与预报请求中指定的属性或属性值相关联的数据。相对照,“全景”预报可使用在针对在预报请求中指定的属性或属性值接收的事件数据中的其他数据(例如,位置数据、信标数据、网络质量等)。在一些具体实施中,全景预报可使用来自于其他属性或属性值相关联的事件的数据。例如,当客户端针对指定属性或属性值请求临时预报或对等预报以及还指定预报类型(极,预报风格)为全景时,采样守护进程102将分析指定属性或属性值的事件数据以及其他属性和属性值的事件数据以识别指定事件与采样守护进程102接收的其他事件之间的关联性。例如,具有值“邮件应用程序”的属性“bundleId”的频率预报可为上午9点15分钟时隙分配分数0.4。然而,全景预报可确定在“邮件应用程序”属性值和用户的工作位置之间存在很强相关联。例如,全景预报可确定用户是否处在与工作相关联的位置,邮件应用程序在上午9点15分钟时隙的90%的时间被调用。因此,采样守护进程102可为上午9点15分钟时隙的“邮件应用程序”预报分数分配较高分数(例如,0.9)。
类似地,采样守护进程102可在“邮件应用程序”“bundleId”属性值和与“motionState”属性值“stationary”相关联的事件的发生之间发现很强关联性。例如,采样守护进程102可确定在邮件应用程序的使用和处于静止中的移动设备100之间的关联性为95%。采样守护进程102可确定在邮件应用程序的使用和处于运动中的移动设备100之间的关联性为5%。因此,采样守护进程102可基于移动设备正在运动或处于静止调整特定时隙内“邮件应用程序”属性值的预报分数(例如,0.95或0.05)。
计分板-频率对全景
在一些具体实施中,采样守护进程102可跟踪哪个预报类型为事件的更好的预测因子。例如,当采样守护进程102接收属性事件时,采样守护进程102可为与接收的事件相关联的属性或属性值生成频率和全景预报并且确定哪种预报类型为接收的属性事件的更好的预测因子。以不同方式论述,即使紧接着接收到属性事件之前生成预报,采样守护进程102可确定频率预报类型或全景预报类型将为接收的属性事件的更好的预测因子。
在一些具体实施中,采样守护进程102可为每种预报类型(例如,默认、全景)保持计分板。例如,每次采样守护进程102确定频率预报类型将为接收事件的更好的预测因子时,采样守护进程102可将频率预报类型的分数(例如,计数器)递增。每次采样守护进程102确定全景预报类型将为接收事件的更好的预测因子时,采样守护进程102可将频率预报类型的分数(例如,计数器)递增。
在一些具体实施中,采样守护进程102可基于为每种预报类型(例如,频率、全景)生成的分数确定默认预报类型。例如,如果计分板进程为全景预报类型生成较高分数,则全景将被分配为默认预报类型。如果计分板进程为频率预报类型生成较高分数,则频率将被分配为默认预报类型。当客户端请求对等或临时预报时,则客户端可指定预报类型(例如,全景、频率、默认)。如果客户端未指定预报类型,则默认预报类型将用来生成对等和/或临时预报。
属性统计值
在一些具体实施中,客户端可请求采样守护进程102生成属性或属性值的统计值。例如,类似于预报生成,客户端可指定将生成属性或属性值的统计值的历史窗口。采样守护进程102将在生成指定属性或属性值的统计值时分析在指定历史窗口内发生的属性事件。客户端请求可指定采样守护进程102将生成以下哪些统计值。
在一些具体实施中,采样守护进程102可为属性或属性值生成“计数”统计值。例如,“计数”统计值可对在指定历史窗口内发生的、与指定属性或属性值相关联的事件数量计数。
在一些具体实施中,采样守护进程102可基于属性值生成统计值。例如,客户端可请求并且采样守护进程102可返回指定历史窗口中属性的第一值和/或最后值。客户端可请求并且采样守护进程102可为指定历史窗口内与指定属性相关联的所有值返回最小、最大、平均、模式和标准偏差。采样守护进程102可生成或确定哪些值与请求的百分位数(例如,第10个、第25个、第50个、第75个、第90个等等)相关联。
在一些具体实施中,采样守护进程102可生成持续时间统计值。例如,采样守护进程102可通过将属性启动事件和属性停止事件比较来确定与属性值相关联的持续时间。启动事件发生和停止事件发生之间的时间差将为事件的持续时间。在一些具体实施中,客户端可请求并且采样守护进程102可为指定历史窗口内与指定属性或属性值相关联的所有持续时间返回最小、最大、平均、模式和标准偏差。采样守护进程102可生成或确定哪些持续时间值与请求的百分位数(例如,第10个、第25个、第50个、第75个、第90个等等)相关联。
在一些具体实施中,采样守护进程102可生成事件间隔统计值。例如,采样守护进程102可通过将属性事件的第一次发生与属性事件的随后发生进行比较确定与属性值相关联的事件的到达或报告相关联的时间间隔。第一次事件发生和随后事件发生之间的时间差将为事件发生之间的时间间隔。在一些具体实施中,客户端可请求并且采样守护进程102可为指定历史窗口内与指定属性或属性值相关联的所有时间间隔值返回最小、最大、平均、模式和标准偏差。采样守护进程102可生成或确定哪些时间间隔值与请求的百分位数(例如,第10个、第25个、第50个、第75个、第90个等等)相关联。
保持应用程序更新-获取更新
图4示出了用于执行应用程序的后台获取更新的示例性系统400。在一些具体实施中,移动设备100可被配置为预测性地启动应用程序作为移动设备100的后台进程,使得应用程序可在用户期望调用应用程序时下载内容并更新其界面。例如,采样守护进程102保持的用户应用程序启动历史数据(例如,“system.bundleId”启动事件)可用来预报(预测)用户将何时调用移动设备100的应用程序。这些预测的应用程序可在用户调用之前由应用程序管理器106启动使得用户将无需等待用户调用的应用程序下载当前内容和更新应用程序的图形界面。
确定何时启动应用程序-临时预报
在一些具体实施中,应用程序管理器106可从采样守护进程102请求应用程序调用预报。例如,采样守护进程102可提供允许应用程序管理器106请求对移动设备100上的应用程序启动(例如,“bundleId”启动事件)的临时预报的界面。采样守护进程102可接收指示用户何时调用移动设备100上的应用程序的事件(例如,“bundleId”启动事件),如上所述。当应用程序管理器106请求“bundleId”属性的临时预报时,采样守护进程102可分析存储在事件数据存储装置104中的“bundleId”事件以确定用户通常在一天中什么时间(例如,在哪个15分钟时隙)调用应用程序。例如,采样守护进程102可通过用户使用上述临时预报机制计算一天中的特定时间或时间段将包括对应用程序的调用的概率。
在一些具体实施中,应用程序管理器106可在应用程序管理器106的初始化期间从采样守护进程102请求对“bundleId”属性的临时预报。例如,应用程序管理器106可在移动设备100的启动期间被调用或启动。当应用程序管理器106正在初始化时,应用程序管理器106可请求对接下来的24小时的应用程序调用(例如,“bundleId”启动事件)的临时预报。一旦经过初始24小时时段,应用程序管理106可请求另一个24小时临时预报。此24小时预报循环例如继续直到移动设备100关闭为止。
在一些具体实施中,采样守护进程102可生成24小时时段的应用程序调用(例如,“bundleId”启动事件)临时预报。例如,采样守护进程102可将24小时时段划分为96个15分钟时隙。采样守护进程102可基于采样守护进程102采集并存储在事件数据存储装置104中的应用程序启动历史数据(例如,“bundleId”启动事件数据)确定已调用哪些应用程序以及在先前运行的许多天(例如,1到7)什么时间调用这些应用程序。
在一些具体实施中,当采样守护进程102生成“bundleId”属性的临时预报时,可根据(任一)应用程序将在15分钟时隙中被调用的概率对每个15分钟时隙进行排位,如在临时预报部分中所述。
一旦针对96个时隙中的每一个计算出应用程序调用概率,则采样守护进程102可选择具有最大非零概率的许多时隙(例如,至多64)并且将标识该时隙的信息返回到应用程序管理器106。例如,采样守护进程102可向应用程序管理器106发送对应于与可能的用户调用的应用程序启动(例如,分数大于0的时隙)对应的15分钟时隙的启动的时间列表(例如,中午12点、下午1点45分等)。
在一些具体实施中,应用程序管理器106可基于采样守护进程102提供的时隙设定定时器。例如,应用程序管理器106可创建或设定对应于采样守护进程102标识的时隙的一个或多个定时器(例如,闹钟)。当每个定时器结束(例如,在中午12点)时,应用程序管理器106可唤醒(例如,如果睡眠、暂停等)并且确定在当前15分钟时隙将启动哪些应用程序。因此,定时器可触发对可能在相应时隙由用户调用的应用程序的获取后台更新。
在一些具体实施中,其他事件可触发应用程序的获取后台更新。例如,应用程序管理器106可向采样守护进程102注册对各个事件的兴趣。例如,应用程序管理器106可注册对有关打开蜂窝收音机、基带处理器或建立网络连接(例如,蜂窝或Wi-Fi)的事件的兴趣(例如,属性),从而可通知应用程序管理器106这些事件何时发生并且触发后台应用程序启用使得应用程序更新可利用活动网络连接的优势。解除移动设备100的锁定,打开显示器和/或其他交互可触发后台应用程序启动和获取更新,如下文进一步所述。在一些具体实施中,如果在前几分钟(例如,7分钟)内执行任何后台更新,则应用程序管理器106将不触发后台应用程序启动和获取更新。
确定启动哪些应用程序-对等预报
在一些具体实施中,应用程序管理器106可请求采样守护进程102提供当前时间启动的应用程序列表。例如,当定时器结束(例如,截止)15分钟时隙或检测到触发事件时,应用程序管理器可从采样守护进程102请求“bundleId”属性的对等预报使得采样守护进程102可确定当前时隙启动哪些应用程序。采样守护进程102随后可生成包括应用程序标识符列表以及指示每个应用程序在大约当前时间将由用户调用的概率的相应分数的对等预报。
图5示出了用于针对移动设备100上的应用程序确定用户调用概率的对等预报。例如,图示500示出了最近历史窗口规范的对等预报(例如,先前2小时)。图示530示出了每日历史窗口规范的对等预报(例如,先前7天中每天4小时框)。图示560示出了每周历史窗口规范的对等预报(例如,4小时框,每7天一次)。在一些具体实施中,采样守护进程102可使用不同重叠窗口规范的对等预报执行时序建模以确定移动设备100上的应用程序的用户调用概率。如果应用程序未在对等预报中出现,则应用程序可被分配零概率值。
在一些具体实施中,可通过生成不同时间窗口的对等预报执行时序建模。例如,基于最近、每天和每周事件历史窗口规范可生成最近、每天和每周对等预报。随后可结合最近、每日和每周对等预报来确定在当前时间启动哪些应用程序,如下文进一步所述。
在一些具体实施中,可基于最近应用程序调用生成用户调用概率。例如,可通过借助指定先前2小时作为感兴趣的时间段(例如,用户在前2小时内发起应用程序调用)的窗口规范执行“bundleId”属性的对等预报来生成用户调用概率。
如图示500所示,应用程序启动历史数据(例如,“bundleId”事件数据)可指示在先前2小时内启动多个(例如,四个)应用程序。例如,点和圈可代表应用程序,其中空圈可代表单个特定应用程序(例如,电子邮件、社交网络应用程序等)而空圈代表其他应用程序的调用。可通过将先前2小时内的特定应用程序调用数量(例如,2个)除以应用程序调用总数(例如,4个)来计算与使用最近历史(例如,先前2小时)的特定应用程序相关联的对等预报概率分数。在所示情况下,与使用最近应用程序启动历史数据的特定应用程序相关联的概率为2/4或50%。
可基于应用程序启动的每日历史(例如,在前七天中每一天的当前时间+-2小时启动哪些应用程序)生成用户调用概率。例如,可通过针对24小时复发频率(例如,每24小时重复一次复发宽度)指定一天中当前时间+-2小时(例如,4小时复发宽度)作为感兴趣的时间段(例如,用户在前2小时内发起应用程序调用)的窗口规范执行“bundleId”属性的对等预报来生成用户调用概率。
图示530示出可用来确定应用程序的用户调用概率的应用程序启动(例如,“bundleId”启动事件)的每日历史。例如,图示530中的每个框代表先前几天(例如,7天)(例如,如在对等预报的窗口规范中指定)中每一天中的时间窗口(例如,一天中当前时间+-2小时),可分析该时间窗口来确定特定应用程序(例如,空圈)的用户调用概率(例如,对等预报分数)。可通过将在所有窗口中的特定应用程序的调用数量(例如,6个)除以在所有窗口中应用程序调用总数(例如,22个)来计算与使用每日历史数据的特定应用程序相关联的概率。在所示情况下,与使用每日启动历史数据的特定应用程序相关联的概率为6/22或27%。
可基于应用程序启动的每周历史(例如,在前七天之前的当前时间+-2小时启动哪些应用程序)生成用户调用概率。例如,可通过借助针对7天复发频率(例如,每7天重复一次复发宽度)指定一天中当前时间+-2小时(例如,4小时复发宽度)作为感兴趣的时间段(例如,用户在前2小时内发起应用程序调用)的窗口规范执行“bundleId”属性的对等预报来生成用户调用概率。
图示560示出可用来确定应用程序的用户调用概率的应用程序启动(例如,“bundleId”启动事件)的每周历史。例如,如果当前日期和时间为星期三下午1点,应用程序的用户调用概率(例如,对等预报分数)可基于在上周三下午1点或大约1点的时间窗口(例如,+-2小时)期间启动的应用程序。在所示情况下,与使用每周应用程序启动历史数据的特定应用程序相关联的概率(例如,空圈)为1/4或25%。
在一些具体实施中,可组合最近、每日和每周用户调用概率来生成每个应用程序的分数。例如,可通过计算最近(r)、每天(d)和每周(w)概率的加权平均来组合最近、每天和每周概率。每个概率可具有相关联的权重并且每个权重可对应于每个概率的按照经验确定的预定义重要性。所有权重的和可等于1。例如,基于最近启动的概率的权重可为0.6,每日概率的权重可为0.3而每周概率的权重可为0.1。因此,组合概率分数可为0.6(r)、0.3(d)和0.1(w)的和(例如,分数=0.6r+0.3d+0.1w)。
重新参考图4,一旦基于最近、每日和每周概率为每个应用程序确定概率分数,则采样守护进程102可向应用程序管理器106推荐具有最高非零概率分数的可配置数量(例如,三个)应用程序用于启动执行后台获取下载/更新。
在一些具体实施中,采样守护进程102可从上述“启动什么”分析中排除不支持后台更新(例如,获取)应用程序更新的应用程序、用户关闭后台更新的应用程序、选择不进行后台更新的应用程序、和/或哪个应用程序当前正由用户使用或位于移动设备100的显示器上的前台,这是因为前台应用程序有可能已经更新。
在一些具体实施中,一旦应用程序管理器106从采样守护进程102接收到该推荐的应用程序,则应用程序管理器106可询问采样守护进程102是否可以启动每个推荐应用程序。采样守护进程102可使用其本地准入控制机制(下文所述)来确定应用程序管理器是否可以启动特定应用程序。例如,应用程序管理器106可向采样守护进程102发送具有标识推荐的应用程序之一的属性值的“bundleId”属性并且请求采样守护进程102对属性值执行准入控制。
本地准入控制
在一些具体实施中,采样守护进程102可针对移动设备100上的属性事件执行准入控制。例如,可对属性或属性值执行准入控制来确定客户端应用程序是否可执行与该属性相关联的活动、动作、功能、事件等。例如,采样守护进程102的客户端可请求对具有“mailapp”值的属性“bundleId”的准入。响应于接收到准入请求,采样守护进程可确定客户端是否可执行与“mailapp”属性值相关联的活动(例如,执行“mailapp”应用程序)。
在一些具体实施中,可基于预算和投票者的反馈执行准入控制。例如,当采样守护进程102接收准入控制请求时,该请求可包括与允许属性事件(例如,启动应用程序、“bundleId”启动事件)相关联的成本。采样守护进程102可检查跨系统数据预算、跨系统能量预算和/或特定属性预算来确定与该属性相关联的预算是否具有足够的保留信用来涵盖属性事件。如果没有与该属性相关联的预算(例如,属性不是预算的属性),则可允许继续进行属性事件(例如,采样守护进程102将响应于准入控制请求返回“确认”值)。如果存在与该属性相关联的预算并且在与相关联的预算中没有足够剩余信用来涵盖事件的成本,则将不允许继续进行属性事件(例如,采样守护进程102将响应于准入控制请求返回“否”值)。
如果存在于该属性相关联的预算并且在预算中存在足够剩余信用来涵盖事件的成本,则投票者将被要求投票允许属性继续进行。如果所有投票者投“是”,则将允许继续进行属性事件(例如,采样守护进程102将响应于准入控制请求返回“确认”值)。如果任一投票者投“否”,则将不允许继续进行属性事件(例如,采样守护进程102将响应于准入控制请求返回“否”值)。在以下段落描述有关预算和投票者的详情。
在一些具体实施中,如果属性或属性值未在准入控制请求之前时间段(例如,7天、一个月等)内在事件中报告给采样守护进程102,则采样守护进程102可响应于准入控制请求返回“从不”值。例如,采样守护进程102可生成临时或对等预报来确定何时允许或承认与属性或属性值相关联的事件。例如,不需要先占未预期发生的事件(例如,不需要预先获取未打算由用户调用的应用程序的数据)。
准入控制-预算
在一些具体实施中,采样守护进程102可基于与属性或属性值相关联的预算执行准入控制。例如,采样守护进程102可基于与属性或属性值相关联的预算确定是否允许(例如,承认)与属性或属性值相关联的活动(例如,事件)。在一些具体实施中,采样守护进程102可基于针对移动设备100配置的跨系统能量预算和/或跨系统数据预算确定是否可以承认属性或属性值。采样守护进程102可将预算存储在记账数据存储装置402中,该记账数据存储装置包括用于在当前时间段(例如,当前小时)保存跟踪保留的数据和能量预算的计数器。当客户端请求针对属性或属性值执行准入控制时,客户端可指定代表允许或承认与属性或属性值相关联的事件发生的成本的数值。如果在预算中存在与属性相关联的足够信用,则属性事件将由投票者来投票,如下所述。如果在预算中没有与属性相关联的足够信用,则将不允许属性事件继续进行。
跨系统能量预算
在一些具体实施中,采样守护进程102可基于能量预算确定是否可以承认属性或属性值。例如,能量预算可为移动设备电池容量毫安时的百分比(例如,5%)。
在一些具体实施中,可在24小时内每个小时其间分发能量预算。例如,采样守护进程102可利用采集并存储在事件数据存储装置104中的电池利用统计值(例如,“system.energy”事件)来确定反映出24小时内每个小时的典型历史电池使用的分布。例如,可基于历史或统计确定的能量使用分布或应用程序使用预报,为每个小时分配能量预算的百分比,如上所述。每个小时将具有大于0(例如,0.1%、1%等)的最小量的能量预算。例如,根据历史能量或应用程序使用,10%的能量预算可在未使用数据的小时其间分布而保留的90%能量预算可在活动使用小时其间分布。在每个小时经过时,当前能量预算将被新/当前小时的能量预算填充。从先前小时剩下的任何能量预算将被添加到当前小时的预算。
在一些具体实施中,记账数据存储装置402可包括用于确定多少能量预算保持可用的计数器。例如,记账数据存储装置402可包括利用当前小时的能量预算而被初始化的一个或多个计数器。当属性事件使用能量预算时,能量预算可递减相应量。例如,应用程序管理器106可通知采样守护进程102何时使用“bundleId”启动或停止事件启动或终止应用程序。反过来,采样守护进程102可通知电力监测器108应用程序何时启动以及应用程序何时终止。基于启动和停止时间,电力监测器108可确定应用程序使用多少能量。电力监测器108可将应用程序使用的电力量传输(例如,通过提交“system.energy”属性事件)到采样守护进程102而采样守护进程102可将适合的计数器递减所使用的电力量。
在一些具体实施中,在当前小时未保留能量预算时,采样守护进程102可拒绝属性的准入请求。例如,当记账数据存储装置402中的能量预算计数器被递减到0时,未留下能量预算并且可能不承认与绑定到能量预算的属性相关联的活动、事件等。如果当前小时保持足够能量预算来涵盖属性事件的成本,则采样守护进程102可响应于准入控制请求返回“是”值并且允许属性事件继续进行。
在一些具体实施中,当移动设备100插入到外部电源时,采样守护进程102不将准入控制决定取决于能量预算。例如,当移动设备100插入到外部电源时,保留的零能量预算将不阻止属性事件。
跨系统数据预算
在一些具体实施中,采样守护进程102可基于数据预算来确定是否可以承认属性。例如,采样守护进程102可基于采样守护进程102采集并存储在事件数据存储装置104中的统计数据(例如,“system.networkBytes”属性事件)确定移动设备100消耗的网络数据的平均量。网络数据预算可计算为用户/移动设备100消耗的平均每日网络数据的百分比。另选地,网络数据预算可为预定义或可配置的值。
在一些具体实施中,可在24小时内每个小时其间分发网络数据预算。例如,每小时可分配最小预算(例如,0.2MB)。可根据历史网络数据使用在24小时每个小时其间分发保留量的网络数据预算。例如,采样守护进程102可基于历史统计数据(例如,“system.networkBytes”属性值)确定在一天中的每个小时消耗多少网络数据并且根据每小时中消耗的数据量分配百分比。在每个小时经过时,当前数据预算将被新/当前小时的数据预算填充。从先前小时剩下的任何能量预算可被添加到当前小时的数据预算。
在一些具体实施中,记账数据存储装置402可为网络数据预算保持数据计数器。在消耗网络数据时,数据计数器可根据网络数据消耗的量递减。例如,消耗的网络数据的量可基于应用程序管理器106提供给采样守护进程102的应用程序启动和停止事件(例如,“bundleId”启动或停止事件)来确定。另选地,网络数据消耗的量可由管理网络界面的进程(例如,网络守护进程406、后台传输守护进程1302)来提供。例如,网络界面管理进程可将可能与应用程序启动和停止事件(例如,“bundleId”事件)相关的“system.networkByte”事件报告给采样守护进程102来确定应用程序消耗多少数据。
在一些具体实施中,采样守护进程102可保持跟踪使用哪种网络界面类型(例如,蜂窝或Wi-Fi)消耗网络数据并且基于网络界面类型确定网络数据消耗的量。可根据分配给每个界面类型的权重或系数调整网络数据消耗的量。例如,在蜂窝数据界面上消耗的网络数据可分配系数一(1)。在Wi-Fi界面上消耗的网络数据可分配系数十分之一(0.1)。可通过将消耗的蜂窝数据添加到消耗的Wi-Fi数据除以十来计算消耗的总网络数据(例如,总数据=1*蜂窝数据+0.1*Wi-Fi)。因此,在Wi-Fi上消耗的数据对数据预算的影响将远小于在蜂窝数据连接上消耗的数据。
在一些具体实施中,在当前小时未保留数据预算时,采样守护进程102可对准入控制请求回应“否”答复。例如,当记账数据存储装置402中的数据预算计数器被递减到0时,未留下数据预算并且将不允许与绑定到数据预算的属性相关联的活动。如果在当前小时内存在足够的保留数据预算来涵盖属性事件的数据成本,则采样守护进程102可对准入控制请求回应“是”答复。
属性预算
在一些具体实施中,属性可与预算相关联。例如,预定义属性或定制(动态定义)属性可通过采样守护进程102的API与预算相关联。采样守护进程102的客户端(例如,应用程序、实体、功能、第三方应用程序等)可向采样守护进程102请求将属性与客户端定制预算相关联。预算例如可以为许多信用。
一旦分配预算,则与预算属性相关联的报告事件可指示与事件相关联的成本并且预算可根据指定成本递减。例如,预定义系统属性“system.btlescan”可配置在移动设备100上来指示移动设备100何时执行对来自其他蓝牙低功耗设备的信号的扫描。蓝牙LE扫描例如可作为后台任务运行。蓝牙LE扫描要求蓝牙广播打开,继而蓝牙广播消耗来自移动设备100的电池的能量。为了避免蓝牙LE消耗过多能量,“btlescan”属性可被分配预算(例如,24个信用)。每次“btlescan”事件生成并且报告给采样守护进程102时,该事件可被报告具有成本(例如,1)。成本可从预算中减去使得每次在事件中报告“btlescan”属性时,预算24递减1。
在一些具体实施中,可在一时间段内分发属性预算。例如,“btlescan”属性预算可在24小时时间段内均匀分发使得“btlescan”属性每小时仅花费1个信用。在一些具体实施中,可在一时间段结束填充属性预算。例如,如果“btlescan”属性预算的时间段为24小时,则“btlescan”属性预算可每24小时被填充。
在一些具体实施中,与属性相关联的预算可为另一预算的子组(例如,子预算)。例如,属性的预算可被指定为另一预算的一部分,诸如上述的跨系统数据或跨系统能量预算。例如,“mailapp.mailbox”属性可与等于为系统分配5%数据预算的预算相关联。“btlescan”属性可与等于为系统分配3%能量预算的预算相关联。子预算(例如,“mailbox”预算)可绑定到超预算(例如,系统数据预算)使得对子预算的递减也递减超预算。在一些具体实施中,如果超预算减小到0,则子预算也减小到0。例如,如果系统数据预算为0,则即使针对“mailbox”属性没有报告将递减“mailbox”属性预算的事件,“mailbox”属性预算也将为0。
在一些具体实施中,采样守护进程102客户端可请求采样守护进程102返回属性剩余的预算量。例如,客户端可向采样守护进程102请求针对“btlescan”属性保留的预算。如果已经使用24个预算信用中的3个,则采样守护进程102可将值21返回到请求客户端。
在一些具体实施中,客户端可在相关联的属性的预算没有信用时报告花费指定数量的预算信用的事件。当采样守护进程102在预算中未保留信用时接收花费1信用的事件(例如,“btlescan”事件)时,采样守护进程102可递减预算(例如,-1)并且向客户端返回报告报告该事件的错误。错误例如可指示属性没有保留的预算。
属性预算成形
在一些具体实施中,可基于历史使用信息分发属性预算。例如,在报告预算属性的事件时,可随时间跟踪使用属性的预算的请求(例如,与成本相关联的事件)。如果例如为“btlescan”属性分配预算24,则该预算最初可在24小时时间段上均匀分配,如上所述。当随时间报告与预算相关联的属性的事件时,采样守护进程102可分析报告的事件来确定在24小时时间段内事件何时最有可能发生。例如,采样守护进程102可确定“btlescan”事件经常发生在大约早上8点、中午12点和晚上6点而几乎不发生在大约凌晨2点。采样守护进程102可使用该事件频率信息形成24小时时间段上“btlescan”属性预算的分发。例如,采样守护进程可为对应于上午8点、中午12点和晚上6点的每个时隙分配两个预算信用,而为与凌晨2点相关联的时隙分配0预算信用。
准入控制-投票者
在一些具体实施中,采样守护进程102可基于来自移动设备100上运行的其他软件(例如,插件、实体、应用程序、启发式进程)的反馈执行准入控制。例如,其他软件可配置为与采样守护进程102一起作为准入控制的投票者工作。例如,几个投票者(例如,应用程序、实体、守护进程、启发式进程等)可向采样守护进程102注册来对准入控制决定投票。例如,采样守护进程102可配置为与监测移动设备100的热状况的投票者、监测移动设备100的CPU使用的投票者和/或监测移动设备100的电池电力水平的投票者进行交互。当采样守护进程102接收准入控制请求时,每个投票者(例如,热、CPU和电池)可被要求对是否将允许与指定属性相关联的活动进行投票。当所有投票者投出“是”时,该属性将得到批准(例如,将允许与属性相关联的活动发生)。当单个投票者投出“否”时,该属性将未得到批准(例如,将不允许与属性相关联的活动)。在一些具体实施中,投票者可被配置为可动态(例如,在运行时)添加到采样守护进程102插件软件以为准入控制系统提供额外功能。在一些具体实施中,投票者可在确定是否许可或允许与属性或属性值相关联的事件时使用上述的临时和对等预报机制。
网络守护进程
在一些具体实施中,网络守护进程406可被配置为准入控制投票者。网络守护进程406可被配置为使用采样守护进程102的投票API,该投票API允许网络守护进程406从采样守护进程102接收投票请求并且向采样守护进程102提供投票(例如,是、否)应答。例如,网络守护进程406可从采样守护进程102接收包括属性和/或属性值的投票请求。网络守护进程406可指示例如当移动设备100连接到语音呼叫而未连接到Wi-Fi网络连接时采样守护进程102将不承认或允许与属性或属性值相关联的事件。例如,为了防止后台更新进程(例如,获取进程)干扰语音呼叫或者降低语音呼叫的质量,网络守护进程406在用户连接到语音呼叫而未连接到Wi-Fi连接时将不允许与启动后台更新进程相关联的事件(例如,“bundleId”启动事件)。因此,网络守护进程406可在移动设备100连接到呼叫而未连接到Wi-Fi时响应于投票请求返回“否”值。
在一些具体实施中,网络守护进程406可在移动设备100具有质量不佳蜂窝网络连接时指示采样守护进程102将不允许或承认属性事件。可在传输率和/或吞吐量低于预定义阈值时确定质量不佳蜂窝连接。例如,如果移动设备100具有质量不佳蜂窝网络连接并且未连接到Wi-Fi,则网络守护进程406可通过在采样守护进程102web作出投票者请求时返回“否”值防止属性事件的准入或执行,该属性事件通过利用质量不佳网络连接(例如,启动将尝试通过不佳蜂窝连接下载或上载数据的应用程序)会浪费电池能量和蜂窝数据。
在一些具体实施中,当网络守护进程406没有指示不佳网络连接的信息或者将影响网络数据使用或系统性能的一些其他状况时,网络守护进程406可对请求的属性的准入投出“是”。
热守护进程
在一些具体实施中,热守护进程110应用程序可被配置为准入控制投票者。热守护进程110可被配置为使用采样守护进程102的投票API,该投票API允许热守护进程110从采样守护进程102接收投票请求并且向采样守护进程102提供投票(例如,是、否)应答。例如,热守护进程可从采样守护进程102接收包括属性和/或属性值的投票请求。热守护进程110可指示当热守护进程110检测到热事件时采样守护进程102将不承认或允许与属性或属性值相关联的事件。例如,热守护进程110可监测移动设备100的温度并且通过生成包括“thermalLevel”属性和温度值的事件来将对应温度值报告给采样守护进程102。
在一些具体实施中,当热守护进程110确定移动设备100的温度大于阈值温度值时,热守护进程110可通过在采样守护进程102向热守护进程110发送请求对属性(例如,“bundleId”)事件投票时返回“否”值,防止热守护进程102允许可能提高移动设备100的工作温度的属性事件。
在一些具体实施中,采样守护进程102在当前存在异常热状况时将仅向热守护进程110要求投票。例如,采样守护进程102可保持热状况值(例如,真,假),该热状况值指示移动设备100是否工作在正常热状况。例如,如果移动设备100的当前热状况正常,则热状况值可为真。如果移动设备100的当前热状况异常(例如,过热、大于阈值温度),则热状况值可为假。初始,热状况值可被设为真(例如,正常工作温度)。在检测到工作温度上升高于阈值温度时,热守护进程110可向采样守护进程102发送指示异常工作温度(例如,假)的热状况值的更新值。一旦移动设备100冷却到低于阈值温度的温度,热守护进程110可更新热状况值以指示正常工作温度(例如,真)。
当采样守护进程102接收属性的准入控制请求时,采样守护进程102可检查热状况值以确定是否询问热守护进程110对属性事件的准入(允许)投票。如果热状况值指示正常工作温度(例如,值为真),则采样守护进程102将热状况值解释为来自热守护进程110的“真”投票。
如果热状况值指示异常工作温度(例如,值为假),则采样守护进程102将向热守护进程110发送属性和/或属性值以允许热守护进程110对特性属性或属性值投票。
在一些具体实施中,热守护进程110可基于移动设备100的当前热状况和属性的对等预报确定如何对属性和/或属性值投票(例如,是,否)。例如,热守护进程110可向采样守护进程102请求属性的对等预报。热守护进程110可通过生成包括感兴趣的时间段中的当前时间(例如,+-1小时、2小时等)的窗口规范请求对当前时间的对等预报。热守护进程110将从采样守护进程102接收指示每个属性值的出现在感兴趣的时间段的可能性分数的对等预报。例如,如果热守护进程110请求“bundleId”属性的对等预报,则热守护进程110可接收“bundleId”值列表(例如,应用程序标识符)以及相关联的预报(例如,概率、可能性)分数。例如,如果在感兴趣的时间段期间,具有属性值“邮件应用程序”、“联系人”、“日历”、“web浏览器”、“邮件应用程序”、“web浏览器”、“邮件应用程序”的“bundleId”事件发生,则“邮件应用程序”发生的相对可能性(即,分数)为0.43(例如,3/7),“web浏览器”发生的相对可能性为0.29(例如,2/7)以及“联系人”或“日历”发生的相对可能性为0.14(例如,1/7)。在一些具体实施中,热守护进程110可根据分数(例如,顶部的最高分数、底部的最低分数)对属性值列表排序。例如,针对上述“bundleId”属性值的排序列表从上到下为:“邮件应用程序”、“web浏览器”、“联系人”和“日历”。
在一些具体实施中,热守护进程110可基于属性值在排序列表中所处的位置确定何时对属性值投出“是”表决。例如,如果热守护进程110在考虑的属性值不在从采样守护进程102接收到的对等预报列表中,则属性值将从热守护进程110接收“否”表决。如果属性值在对等预报列表中并且低于列表中的阈值水平(例如,索引)(例如,基于分数位于属性的底部25%中),则热守护进程110将对属性投“否”表决。如果属性值在对等预报列表中并且高于列表中的阈值水平(例如,基于分数位于属性的顶部75%中),则热守护进程110将对属性投“是”表决。一旦确定表决,则热守护进程110将“是”(例如,真)或“否”(例如,假)表决返回到采样守护进程102。
在一些具体实施中,热守护进程110可配置有最大阈值水平以避免对所有属性值投“否”表决(例如,使得一些属性事件将发生)。最大阈值水平可为排序的对等预报列表中属性值的50%(例如,顶部50%得到“是”表决,底部50%得到“否”表决)。因此,热守护进程110可调整阈值水平,该阈值水平从具有最低分数的属性值的0%到50%将接收到“是”表决的属性值与将接收到“否”表决的属性值分隔开。
在一些具体实施中,用于确定“是”或“否”表决的阈值水平可与移动设备100的热水平(例如,温度)成比例。例如,热守护进程110可配置有最大工作热水平(Lh)和正常工作水平(Ln)。热守护进程110可确定当前工作热水平(Lc)以及确定移动设备100当前工作(例如,Lc-Ln/Lh-Ln=%)为热范围(例如,Lh-Ln)的百分比。热守护进程110可使用计算出的百分比确定0-50%属性值的什么部分将接收到“否”表决。例如,如果当前工作热水平计算为热范围的65%,则对等预报分数的属性值的底部32.5%将从热守护进程110接收到“否”表决。因此,最不重要的属性值将接收到“否”表决而最重要的属性值将接收到“是”表决。返回参考以上“bundleId”示例,如果针对上述“bundleId”属性值的排序列表从上到下为:“邮件应用程序”、“web浏览器”、“联系人”和“日历”,则“日历”将接收到“否”表决而“邮件应用程序”、“web浏览器”和“联系人”将接收到“是”表决(例如,“邮件应用程序”、“web浏览器”和“联系人”为使用最多的应用程序)。例如,如果应用程序管理器106对“bundleId”属性web作出准入控制请求来确定启动哪些应用程序,则将启动“邮件应用程序”、“web浏览器”和“联系人”应用程序而将不启动“日历”应用程序。
作为另一示例,热守护进程110可被要求对“mailapp.mailbox”属性投票表决。可生成对“mailapp.mailbox”属性值的对等预报,该属性值产生指示最频繁访问的文件夹到最少频次访问的文件夹的邮件文件夹排列列表(例如,“收件箱”、“个人”、“工作”、“家庭”、“垃圾邮件”和“垃圾箱”)。如果属性值的底部32.5%接收到“否”表决,则“垃圾邮件”和“垃圾箱”将接收到“否”表决。例如,如果“邮箱”应用程序对“mailapp.mailbox”属性值web作出准入控制请求来确定从哪些文件夹获取邮件,则“mailapp”应用程序将获取“收件箱”、“工作”和“家庭”文件夹的邮箱而不获取“垃圾邮件”和“垃圾箱”文件夹的邮件。在一些具体实施中,当采样守护进程102保持的热状态值被复位来指示正常工作温度(例如,真值)时可通知已从热守护进程110接收到“否”表决的属性或属性值。例如,采样守护进程102可存储标识客户端、已接收到“否”表决的属性和属性值的数据。在从热守护进程110接收到更新的热状态值(例如,真)时,采样守护进程102可向接收到“否”表决的客户端发送通知以提示客户端尝试对先前拒绝的属性或属性值的另一准入控制请求。在一些具体实施中,客户端可重新发送准入控制请求而无需来自采样守护进程102提示。例如,客户端可具有使得客户端在时间段截止之后重试准入控制请求的内部定时器。
活动监测器
在一些具体实施中,活动监测器应用程序408可被配置为准入控制投票者。活动监测器408可被配置为使用采样守护进程102的投票API,该投票API允许活动监测器408从采样守护进程102接收投票请求并且向采样守护进程102提供投票(例如,是、否)应答。例如,活动监测器408可从采样守护进程102接收包括属性和/或属性值的投票请求。活动监测器408可指示例如当移动设备100使用大于存储器资源或CPU资源的阈值量(例如,90%)时采样守护进程102将不承认或允许与属性或属性值相关联的事件。例如,如果移动设备100已运行使用移动设备100的大多数存储器资源或CPU资源的许多应用程序或进程,则通过用光剩余的存储器资源在后台启动另外的应用程序将有可能降低移动设备100的性能。因此,当活动监测器408确定存储器或CPU使用超过阈值(例如,75%)时,活动监测器408可在采样守护进程102发送对“bundleId”属性事件投票的请求时返回“否”值防止应用程序管理器106启动另外的应用程序。如果活动监测器408确定移动设备100的存储器和/或CPU资源低于阈值使用量,则活动监测器408可响应于来自采样守护进程102的投票请求返回“是”值。
启动后台获取应用程序
在一些具体实施中,当应用程序管理器106向采样守护进程102web作出准入控制请求并接收到“是”回复时,应用程序管理器106可在移动设备100的工作环境的后台调用或启动所识别的应用程序(例如,如“bundleId”属性值所识别的,应用程序108)。例如,应用程序108可在后台启动使得对用户来说应用程序108被启动并不明显。应用程序108随后可通过网络(例如,互联网)与内容服务器404通信以下载更新的内容显示给用户。因此,当用户随后选择应用程序108(例如,使得应用程序进入前台)时,用户将被呈现当前更新的内容而不必等待应用程序108从服务器404下载内容以及刷新应用程序用户界面。
在一些具体实施中,应用程序管理器106可被配置为当移动设备100充电以及连接到Wi-Fi时启动支持后台获取的应用程序。例如,采样守护进程102可确定移动设备100何时连接到外部电源(例如,基于“cablePlugin”属性事件)以及通过Wi-Fi(例如,接收的事件)连接到网络(例如,互联网)以及向应用程序管理器106发送信号使得应用程序管理器106启动已在先前时间量(例如,七天)内使用的支持获取的应用程序。
示例性后台获取进程
图6是用于预测性地启动应用程序来执行后台更新的示例性进程600的流程图。例如,进程600可由应用程序管理器106和采样守护进程102执行来确定何时启动配置为从网络资源,诸如图4的内容服务器404获取数据更新的后台应用程序。可参考以上的图4和图5得到与进程600的步骤有关的另外描述。
在步骤602处,应用程序管理器106可从采样守护进程102接收应用程序调用预报。例如,应用程序管理器106可在移动设备100的启动期间被启动。在其初始化期间,应用程序管理器106可在接下来的24小时时间段请求对移动设备100的用户有可能调用的应用程序的预报。例如,应用程序管理器106可请求属性“bundleId”的临时预报。该预报可指示何时启动应用程序。例如,24小时时间段可被划分为多个15分钟块并且每个15分钟块可与用户将在15分钟块期间将调用应用程序的概率相关联。在用户有可能调用应用程序时,返回到应用程序管理器106的预报可识别至多64个15分钟时间块。
在步骤604处,应用程序管理器106可基于应用程序启动预报设定定时器。例如,应用程序管理器106可为在返回到应用程序管理器106的应用程序启动预报中由采样守护进程102识别的15分钟块的每一个设定定时器或闹钟。
在步骤606处,应用程序管理器106可请求采样守护进程102识别启动哪些应用程序。例如,当定时器截止或闹钟停止时,如果应用程序管理器睡眠或暂停时可唤醒,并且从采样守护进程102请求针对当前15分钟时间块要启动的应用程序列表。采样守护进程102可返回应在移动设备100上的后台启动的应用程序列表。例如,应用程序管理器106可请求对属性“bundleId”的对等预报。对等预报可指示“bundleId”属性中哪些值最有可能在当前15分钟时隙中被报告(例如,哪些应用程序最有可能被用户调用)。
在步骤607处,应用程序管理器106可向采样守护进程102发送请求询问是否可以启动应用程序。例如,针对响应于“bundleId”对等预报请求采样守护进程102识别的每个应用程序,应用程序管理器106可询问采样守护进程102是否可以启动应用程序。例如,应用程序管理器106可请求采样守护进程102对“bundleId”属性的特定值执行准入控制,该“bundleId”属性对应于应用程序管理器106正尝试启动的应用程序。如果可以启动应用程序,采样守护进程102从准入控制请求返回“是”,如果不确认启动应用程序则返回“否”,或者如果从未确认启动应用程序则返回“从未”。
在步骤610处,应用程序管理器106可启动应用程序。例如,如果采样守护进程102返回对准入控制请求的“确认”(例如,确认、是、真等等)应答,则应用程序管理器106将作为移动设备100的后台进程启动应用程序。如果采样守护进程102返回对准入控制请求的“否”或“从未”应答,则应用程序管理器106将不启动应用程序。
在步骤612处,应用程序管理器106可将应用程序启动通知传输到采样守护进程102。例如,应用程序管理器106可将“bundleId”启动事件传输到采样守护进程102来记录对启动的应用程序的执行。
在步骤614处,应用程序管理器106可检测到启动的应用程序已终止。例如,应用程序管理器106可确定启动的应用程序不再在移动设备100上运行。
在步骤616处,应用程序管理器106可将应用程序终止通知传输到采样守护进程102。例如,应用程序管理器106可将“bundleId”结束事件传输到采样守护进程102来记录对应用程序的终止。
图7是用于确定何时启动移动设备100上的应用程序的示例性进程700的流程图。例如,进程700可用来基于应用程序使用统计值(例如,“bundleId”属性事件数据)、数据和能量预算、以及移动设备工作和环境状况确定何时启动应用程序、将启动哪些应用程序以及是否可以启动应用程序,如参考图4在上文详述。
在步骤702处,采样守护进程102可从应用程序管理器106接收应用程序启动预报请求。例如,应用程序管理器106可向采样守护进程102请求接下来24小时“bundleId”属性的临时预报。一旦经过24小时时间段,应用程序管理器106可请求随后的24小时时间段的“bundleId”属性的临时预报。例如,应用程序管理器106可每24小时请求“bundleId”属性的临时预报。
在步骤704处,采样守护进程102可确定应用程序启动预报。例如,应用程序启动预报(例如,“bundleId”属性的临时预报)可用来预测在24小时时间段内有可能在何时发生用户发起的应用程序启动。24小时时间段可被划分为15分钟时间块。对于每个15分钟时间块(例如,24小时时间段有96个15分钟时间块),采样守护进程102可使用历史用户调用统计值(例如,“bundleId”启动事件)来确定在15分钟时间块内用户发起的应用程序启动将发生的概率,如上文参考图4所述。
在步骤706处,采样守护进程102可将应用程序启动预报传输到应用程序管理器106。例如,采样守护进程102可选择至多64个用户发起的应用程序启动的最高非零概率的15分钟时间块。所选的15分钟时间块中的每一个可由15分钟时间块的启动时间标识(例如,12:45pm)。采样守护进程102可向应用程序管理器106发送15分钟时间块标识符列表作为应用程序启动预报(例如,“bundleId”属性的临时预报)。
在步骤708处,采样守护进程102可接收当前时间启动哪些应用程序的请求。例如,应用程序管理器106可向采样守护进程102发送请求用于采样守护进程102确定在当前时间或大约在当前时间将启动哪些应用程序。例如,请求可为当前15分钟时隙的“bundleId”属性的对等预报的请求。
在步骤710处,采样守护进程102可基于历史事件数据为当前时间的应用程序打分。采样守护进程102可基于采样守护进程102采集的历史用户发起的应用程序启动数据(例如,“bundleId”属性启动事件数据)确定在不久的将来用户有可能启动哪些应用程序。采样守护进程102可基于用户将在当前时间或大约当前时间调用应用程序的历史可能性利用最近应用程序启动数据、每日应用程序启动数据和/或每周应用程序启动数据来为应用程序打分,如上文参考图4和图5所述。
在步骤712处,采样守护进程102可将应用程序和应用程序分数传输到应用程序管理器106。例如,采样守护进程102可选择具有最高分数(例如,将由用户调用的最高概率)的多个(例如,三个)应用程序(例如,“bundleId”属性值)来传输到应用程序管理器106。采样守护进程102可排除已在先前时间段(例如,前5分钟)启动的应用程序。采样守护进程102可将标识最高分数的应用程序的信息及其各自分数传输至应用程序管理器106,如上文参考图4所述。
在步骤714处,采样守护进程102可从应用程序管理器106接收确定是否可以启动应用程序的请求。例如,采样守护进程102可接收标识应用程序(例如,“bundleId”值)的准入控制请求。
在步骤716处,采样守护进程102可确定当前移动设备状况和预算允许应用程序启动。例如,响应于准入控制请求,采样守护进程102可核查跨系统数据和能量预算、属性预算和投票者反馈来确定应用程序是否将作为后台任务在移动设备100上启动,如上文参考图4详述。
在步骤718处,采样守护进程102可向应用程序管理器106传输应答指示可以启动所标识的应用程序。例如,如果状况适合后台应用程序启动,则采样守护进程102可响应于准入控制请求向应用程序管理器106返回“是”值(例如,确认、是、真,等等)使得应用程序管理器106能启动所标识的应用程序。
短期趋势变化
在一些具体实施中,采样守护进程102可配置为检测属性的趋势何时变化。例如,客户端应用程序可向采样守护进程102注册对特定属性的兴趣。当采样守护进程102检测特定属性的趋势变化时,采样守护进程102可通知客户端特定属性趋势变化。
例如,应用程序管理器106可注册对“bundleId”属性(或“bundleId”属性的特定值)的兴趣。当采样守护进程102确定“bundleId”属性(或其值)趋势变化时,采样守护进程102可将该趋势通知应用程序管理器106使得应用程序管理器106可预测性地在移动设备100上的后台启动趋势变化的应用程序。例如,如果应用程序正由移动设备100的用户重复调用,则该应用程序趋势变化。在一些情况下,趋势变化的应用程序为新应用程序,或者在趋势变化之前,为可能未包括在上述“bundleId”属性对等预报中的极少使用的应用程序。因此,趋势变化的应用程序可不使用上述的应用程序启动预报方法保持为最新的。
属性趋势检测的目的在于检测重复报告给采样守护进程102的属性(例如,属性事件)并且确定启动该属性的大致节奏(例如,周期性),错误报告较小节奏。重复报告给采样守护进程102的属性被称为“趋势变化”。采样守护进程102客户端随后可使用确定的节奏在希望与趋势变化的属性相关联的接下来的事件时执行功能或操作。
例如,应用程序管理器106可使用确定的节奏设定将触发应用程序管理器106在后台启动趋势变化的应用程序的定时器,使得在用户调用应用程序时将更新应用程序,如上所述。例如,如果一个应用程序的节奏为5分钟,则应用程序管理器106可设定每4分钟将截止并且使得应用程序管理器106启动应用程序的定时器,使得应用程序可在用户再次调用之前接收已更新的内容并且更新应用程序界面。
在一些具体实施中,本文所述的趋势检测机制可用来检测越过应用程序启动之外的其他系统事件趋势,诸如重复的软件或网络通知、应用程序崩溃等等。例如,客户端可注册对任何属性或属性值的兴趣并且可在感兴趣的属性趋势变化时接收通知。
在一些具体实施中,采样守护进程102可保持可用来跟踪许多属性的行为的趋势变化表。趋势变化表可包括属性值标识字段(ATTID)、状态字段(STATE)、上一次启动时间戳(LLT)、指示启动之间的时间量的启动间节奏(ILC)、以及置信字段(C)。
图8是示出了用于趋势变化表中的条目(例如,应用程序)的状态转换的流程图800。初始在802处,趋势变化表可包括空条目(例如,记录),其中ATTID、LLT、ILC和C字段为空(例如,不适用)而STATE被设为“无效”(I)。当在时间t处报告属性事件时,向趋势变化表扫描可用条目(例如,状态I中的条目)。在可能的无效条目中,可使用几个方法用于选择要使用的条目。例如,可选择随机无效条目。另选地,可选择无效条目使得趋势变化表中的所有空条目按连续次序保持。如果不存在无效条目,可选择瞬时(T)状态的最旧条目(或随机条目)来跟踪最新启动的应用程序。如果不存在I或T状态条目,可选择最旧新(N)状态条目来跟踪新报告的属性事件。
在步骤804处,一旦选择趋势变化表条目,用于跟踪新报告的属性事件的所选条目的STATE字段可设为新(N),ATTID可设为新报告属性的属性值,LLT字段可设为当前时间t(例如,壁钟时间)而ILC和C字段设为预定义最小值ILC_MIN(例如,1分钟)和C_MIN(例如,0)。
在步骤806处,在时间t'对同一属性事件的下一个报告中,了解到属性的表中的条目是否还存在并且还未被逐出(例如,选择跟踪另一属性)。条目的STATE设为瞬时(T),ILC设为LLT和当前系统时间之间的差值(例如,t’-t或t’-LLT),C字段递增(例如,预定义值C_DELTA)。另选地,ILC字段可设为其旧和新值的一些其他功能,诸如运行平均值。
在步骤808处,在时间t”对同一属性事件的下一个报告中,了解到属性的表中的条目是否还存在并且还未被逐出(例如,选择跟踪另一属性)。条目的STATE可保持设为瞬时(T),ILC设为LLT和当前(例如,墙壁)时钟时间之间的差值(例如,t”-t’或t”-LLT),C字段再次递增(例如,预定义值C_DELTA)。
在步骤810处,如果在属性事件的几次报告之后,趋势变化表条目的C值达到(例如,等于)阈值(例如,C_HIGHTHRESHOLD),在步骤811处,属性条目的状态可变为STATE=A。如果在步骤810处,趋势变化表条目的C值未达到阈值(例如,C_HIGHTHRESHOLD),则可根据步骤808来更新条目的值。
无论何时在状态“A”时报告属性事件,如果上一次报告和当前报告的时间之间的时间落在某个时间量内(例如,ILC_EPSILON=5分钟),则属性条目的置信(C)字段递增直到达到预定义最大值(例如,C_MAX)为止。当趋势变化表中的属性条目为活动(A)状态时,条目的ILC值可用作启动率(例如,节奏)的估计并且可使用条目的ATTID来识别趋势变化的属性值。
在一些具体实施中,采样守护进程102可向客户端发送属性值(ATTID)和节奏值(ILC)使得客户端可在希望与属性值相关联的下一个事件时执行某个动作或功能。例如,属性值和节奏值可发送到应用程序管理器106使得在希望用户调用应用程序时应用程序管理器106能在后台启动所标识的应用程序(例如,ATTID、“bundleId”属性值),从而应用程序可在用户启动应用程序之前可接收到更新的内容,如上所述。例如,应用程序管理器106可基于节奏值设定定时器,该定时器在希望用户调用应用程序时将唤醒应用程序管理器106以启动该应用程序。
在一些具体实施中,采样守护进程102可基于检测到的属性趋势通知客户端希望下一次属性事件的发生。例如,采样守护进程102可向应用程序管理器106发送指示应用程序管理器106将启动趋势变化的应用程序的信号或通知。应用程序管理器106可通过向采样守护进程102发送应用程序标识符(例如,“bundleId”属性值)注册对应用程序的兴趣。采样守护进程102可监测用于用户调用的应用程序(例如,基于报告的“bundleId”启动事件)来确定应用程序是否发生趋势变化,如上所述。如果应用程序趋势变化,则采样守护进程102可确定调用的节奏,如上所述,并且在根据该节奏确定的时间向应用程序管理器106发送通知或信号。例如,如果节奏为四分钟,则采样守护进程102可每3分钟(例如,在事件的下一次发生之前的一段时间)向应用程序管理器106发送信号以使得应用程序管理器106启动应用程序。如果节奏变为6分钟,则采样守护进程102可检测节奏变化并且调整何时向应用程序管理器106发信号。例如,采样守护进程102可每5分钟而不是每3分钟向应用程序管理器106发信号来启动应用程序从而调整减小的节奏(例如,调用之间增大的时间段)。
在出于任何原因每次检测到属性趋势变化表时(例如,添加新条目、更新已有条目,等等),STATE=T或STATE=A中自上一次启动的时间比其ILC大于ILC_EPSILON的所有条目将使其C值递减。记下在此刻C值低于最小阈值(例如,C_LOWTHRESHOLD)的任何条目。例如,条目可从状态A记到状态T或者从状态T记到状态I。
在一些具体实施中,上述的趋势检测机制可用来检测应用程序调用或启动之外的趋势变化事件。例如,上述的趋势检测方法和趋势变化表可用来检测和跟踪移动设备100上的任何复发事件(例如,任何属性事件)。趋势变化事件可包括屏幕触摸、网络连接、应用程序失败、网络入侵的发生和/或可向采样守护进程102报告或发信号的任何其他事件。
推送通知
图9是示出用于将推送通知提供给移动设备100的系统的框图900。在一些具体实施中,移动设备100可配置为接收推送通知。例如,推送通知可为由推送提供商902发起并且通过推送通知服务器906发送到运行在移动设备100上的推送服务守护进程904的消息。
在一些具体实施中,推送提供商902可通过应用程序908呈现给移动设备100的用户的用户授权请求接收授权来将推送通知发送给移动设备100。例如,推送提供商902可为创建(例如,编程、开发)应用程序908的同一供货商拥有、运营和/或保持的服务器。当应用程序908在移动设备100上呈现用户界面请求授权推送提供商902向移动设备100发送推送通知并且用户指示该推送通知得到授权时,推送提供商902可从用户接收授权来将推送通知发送给移动设备100(例如,推送服务守护进程904)。例如,用户可在应用程序908呈现的用户界面上选择按钮来指示推送通知授权用于推送提供商902和/或应用程序908。推送提供商902随后可接收设备令牌,该令牌标识移动设备100并且可用来将推送通知路由到移动设备100。例如,推送通知服务器906可接收具有推送通知的设备令牌并且使用该设备令牌确定哪个移动设备100将接收该推送通知。
在一些具体实施中,移动设备100可向推送通知服务器906发送标识授权的推送应用程序的信息。例如,移动设备100可向推送通知服务器906发送包含推送通知过滤器914和移动设备100的设备令牌的消息926。推送通知服务器906可存储设备令牌(例如,用于移动设备100的标识符)到推送过滤器914的映射用于推送通知服务器906所服务的每个移动设备。推送过滤器914例如可包括标识已接收到授权来在移动设备100上接收推送通知的信息。
在一些具体实施中,推送过滤器914可由推送通知服务器906用来滤除(例如,阻止发送)对未经过移动设备100的用户授权的应用程序的推送通知。推送提供商902发送到推送通知服务器906的每个推送通知可包括标识与推送提供商902相关联的应用程序908和移动设备100(例如,设备令牌)的信息(例如,标识符)。
当通知服务器906接收推送通知时,通知服务器906可使用移动设备标识信息(例如,设备令牌)确定哪些推送过滤器914应用到接收的推送通知。通知服务器906可将推送通知中的应用程序标识信息与用于所标识的移动设备的推送过滤器914进行比较以确定与推送提供商902相关联以及在推送通知中标识的应用程序是否标识在推送过滤器914中。如果与推送通知相关联的应用程序标识在推送过滤器914中,则通知服务器906可将从推送提供商902接收的推送通知传输到移动设备100。如果在推送通知中标识的应用程序未标识在推送过滤器914中,则通知服务器不会将从推送提供商902接收的推送通知传输到移动设备100并且可删除该推送通知。
非唤醒推送通知
在一些具体实施中,通知服务器906可配置为处理高优先级推送通知和低优先级推送通知。例如,推送提供商902可向推送通知服务器906发送高优先级推送通知910和/或低优先级推送通知912。推送提供商902可例如通过指定发送到推送通知服务器906和移动设备100的推送通知内包含的数据中推送通知的优先级来将推送通知识别为高优先级或低优先级。
在一些具体实施中,推送通知服务器906可处理不同于高优先级推送通知910的低优先级推送通知912。例如,推送通知服务器906可配置为将高优先级推送910中包含的应用程序标识信息与推送过滤器914中的授权的应用程序标识信息进行比较以确定是否可将高优先级推送通知910传输至移动设备100。如果高优先级推送通知910中的应用程序标识信息匹配推送过滤器914中的授权的应用程序标识符,则推送通知服务器906可将高优先级推送通知传输至移动设备100。如果高优先级推送通知910中的应用程序标识信息不匹配推送过滤器914中的授权的应用程序标识符,则推送通知服务器906将不会把高优先级推送通知传输至移动设备100。
在一些具体实施中,推送通知服务器906可配置为延迟低优先级推送通知的输送。例如,当移动设备100从推送通知服务器906接收推送通知时,对推送通知的接收使得移动设备100唤醒(例如,如果处于睡眠或低电力状态)。当移动设备100唤醒时,移动设备100将打开会耗损电池、使用蜂窝数据、使得移动设备100发热或以另外方式影响移动设备100的各种子系统和处理器。通过阻止或延迟将低优先级推送通知输送到移动设备100,移动设备100可节省例如网络(例如,蜂窝数据)和系统(例如,电池)资源。
在一些具体实施中,推送通知过滤器914可包括唤醒列表916和非唤醒列表918。唤醒列表916可标识将把低优先级推送通知输送给移动设备100的应用程序。在一些具体实施中,当授权应用程序在移动设备100接收推送通知时,应用程序标识信息默认被添加到唤醒列表914。非唤醒列表918可标识将把低优先级推送通知延迟的授权的应用程序。当描述推送通知发起的后台更新时,下文详述用于填充非唤醒列表918和/或操控唤醒列表916和非唤醒列表918的特定机制。在一些具体实施中,只要在推送过滤器914中(例如,唤醒列表914和/或非唤醒列表918)标识在高优先级推送通知中标识的应用程序,高优先级推送通知将不在推送通知服务器906处延迟并且将输送到移动设备100。
在一些具体实施中,当推送通知服务器906接收低优先级推送通知912时,推送通知服务器906可将低优先级推送通知912中的应用程序标识符与唤醒列表916和/或非唤醒列表918进行比较。例如,如果低优先级推送通知912中的应用程序标识信息匹配唤醒列表916中的授权的应用程序标识符,则低优先级推送通知912将在通知消息920中被输送到移动设备100。
在一些具体实施中,可延迟与在非唤醒列表918中标识的应用程序相关联的低优先级推送通知的输送。例如,如果在低优先级推送通知912中标识的应用程序还在非唤醒列表918中标识,则低优先级推送通知912可存储在推送通知数据存储装置922中而未立即输送到移动设备100。在一些具体实施中,如果推送通知(高或低优先级)标识的移动设备100当前未连接到推送通知服务器906,则对于断开连接的移动设备100的推送通知可被存储在推送通知数据存储装置922中用于稍后输送到移动设备100。
在一些具体实施中,推送数据存储装置922中存储的推送通知可保持在推送数据存储装置922中直到与存储的推送通知相关联的应用程序标识符从非唤醒列表918移动到唤醒列表916为止或在推送通知服务器906与移动设备100之间建立网络连接为止。例如,当另一(高或低优先级)推送通知输送到移动设备100或当移动设备100向推送通知服务器906发送其他传输924(例如,状态消息、心率消息、保持活动消息,等等)时,可建立推送通知服务器906与移动设备100之间的网络连接。例如,移动设备100可向推送通知服务器905发送消息924指示移动设备100将在一时间段(例如,5分钟)内保持活动并且在所指定的活动时间段期间推送通知服务器906可向移动设备100发送所有接收到的推送通知。在一些具体实施中,当移动设备100与推送通知服务器906之间建立网络连接时,推送通知存储装置922中存储的所有推送通知将被输送到移动设备100。例如,推送通知数据存储装置922中存储的推送通知可通过由其他传输在移动设备100与推送通知服务器906之间创建的连接来传输。
在一些具体实施中,移动设备100可与推送通知服务器906建立两个不同的通信信道。例如,可同时或在不同时间建立这两个通信信道。移动设备100例如可具有与推送通知服务器906的蜂窝数据连接和/或Wi-Fi连接。在一些具体实施中,移动设备100可针对每个通信信道生成不同推送过滤器914并且传输到推送通知服务器906。例如,蜂窝数据连接可与第一组推送过滤器914相关联用于确定何时通过蜂窝数据连接发送高和低优先级推送通知。Wi-Fi数据连接可与和蜂窝数据推送过滤器相同或不同的第二组推送过滤器914相关联用于确定何时通过Wi-Fi数据连接发送高和低优先级推送通知。当推送通知服务器906接收推送通知时,推送通知服务器可将推送通知中标识的应用程序与针对通信信道(例如,Wi-Fi、蜂窝)的推送通知过滤器进行比较,推送通知服务器906将使用该通信信道把推送通知传输到移动设备100。
推送发起的后台更新
在一些具体实施中,移动设备100接收到推送通知可触发移动设备100上应用程序的后台更新。例如,当移动设备100(例如,推送服务守护进程904)从推送通知服务器906接收推送通知消息920时,推送服务守护进程904可将推送通知消息920中的应用程序标识符与移动设备100上存储的推送过滤器928进行比较以确定推送通知消息920是否正确输送或将由推送通知服务器906过滤掉(例如,不输送)。例如,推送过滤器928、唤醒列表930和非唤醒列表932可分别对应于推送过滤器914、唤醒列表916和非唤醒列表918。在一些具体实施中,如果推送服务守护进程904确定原本不该将推送通知消息920输送到移动设备100,则将删除推送通知消息902。
低优先级推送通知
在一些具体实施中,移动设备100接收的推送通知消息920可包括低优先级推送通知。例如,低优先级推送通知可指示内容更新可用于与推送通知相关联的应用程序。因此,当低优先级推送通知使得应用程序908启动时,应用程序908可从一个或多个网络资源(例如,推送提供商902)下载更新的内容。
在一些具体实施中,当推送服务守护进程904接收到与移动设备100上的应用程序(例如,应用程序908)相关联的低优先级推送通知时,推送服务守护进程904可询问采样守护进程102是否可以启动与接收的低优先级推送通知相关联的应用程序。例如,推送服务器守护进程904可通过向采样守护进程102发送与接收到的低优先级推送通知相关联的应用程序的标识符来请求采样守护进程102执行准入控制。采样守护进程102可通过核对数据预算、能量预算、属性预算和投票者反馈来执行准入控制,如上参考图4所述。采样守护进程102可基于准入控制进程的输出向推送服务守护进程904返回用于指示是否可以启动低优先级推送通知所标识的应用程序的值。
在一些具体实施中,如果从准入控制请求返回的值指示“是”确认启动应用程序,则推送服务守护进程904将向应用程序管理器106发送低优先级推送通知并且应用程序管理器106可调用应用程序(例如,应用程序908)。应用程序908随后可通过网络(例如,互联网)与推送提供商902通信来从推送提供商902接收更新的内容。
在一些具体实施中,如果从准入控制请求返回的值指示“否”不确认启动应用程序,则推送服务守护进程904将低优先级推送通知存储在推送通知数据存储装置934中。例如,当存储低优先级推送通知时,推送服务守护进程904将仅存储针对推送通知中标识的应用程序所接收的上一个推送通知。
在一些具体实施中,当采样守护进程102指示推送服务守护进程904当前将不启动应用程序(例如,准入控制应答为“否”)时,推送服务守护进程904可将针对应用程序的应用程序标识符从唤醒列表930移动到非唤醒列表932。例如,如果采样守护进程102确定移动设备的预算、和/或状况不允许启动应用程序,则针对与应用程序相关联的另外低优先级推送通知允许推送通知服务器906唤醒移动设备100将仅进一步消耗移动设备100的数据和能量预算或者使得环境状况更坏(例如,使得设备变热)。因此,通过将应用程序标识符移动到非唤醒列表932以及向推送通知服务器906发送包括更新的过滤器928(例如,唤醒列表930和非唤醒列表932)的消息926,通知服务器906可更新其自身推送过滤器914、唤醒列表916和非唤醒列表918以反映推送过滤器928的变化并且阻止应用程序的另外低优先级推送通知输送到移动设备100。
在一些具体实施中,如果从准入控制请求返回的值指示“从未”确认启动应用程序,则推送服务守护进程904将删除低优先级推送通知并且从推送过滤器928去除与推送通知相关联的应用程序标识符。更新的推送过滤器可被传输到推送通知服务器906并且推送通知服务器906上的推送过滤器914可被更新以阻止推送通知服务器906发送与应用程序标识符相关联的任何更多推送通知。
在一些具体实施中,采样守护进程102可将“停止”信号传输到推送服务守护进程904从而临时阻止未来的低优先级推送通知从推送通知服务器906发送到移动设备100。例如,当采样守护进程102确定数据预算在当前小时耗光、能量预算在当前小时耗光、系统经历热事件(例如,移动设备100过热)、移动设备100具有不良蜂窝连接以及移动设备100未连接到Wi-Fi和/或移动设备100连接到语音呼叫但未连接到Wi-Fi时,采样守护进程102可向推送服务守护进程904发送停止信号。当推送服务守护进程904接收停止信号时,推送服务守护进程904可将唤醒列表930中的应用程序标识符移动到非唤醒列表932并且将更新的推送过滤器928传输到推送通知服务器906来更新推送过滤器914。因此,推送通知服务器906将临时阻止未来低优先级推送通知唤醒移动设备100以及影响移动设备100的预算、限制和工作状况。
在一些具体实施中,采样守护进程102可将重试信号传输到推送服务守护进程904。例如,采样守护进程102可监测预算、网络连接、限制和设备状况的状态并且在推送数据预算未耗尽时,在能量预算未耗尽时,在移动设备100未经历热事件时,在移动设备100具有良好质量蜂窝连接或者连接到Wi-Fi时,在移动设备100未连接到语音呼叫时以及在启动率限制已复位时,将向推送服务守护进程904发送重试消息。一旦推送服务守护进程904接收到重试信号,则推送服务守护进程904针对推送通知数据存储装置934中的每个推送通知向采样守护进程102发送准入控制请求以确定是否可以启动与存储的推送通知相关联的每个应用程序(例如,“bundleId”属性值)。
如果采样守护进程102从准入控制请求返回“是”,则推送服务守护进程904可向应用程序管理器106发送推送通知并且应用程序管理器106可将与推送通知相关联的应用程序作为移动设备100上的后台进程启动,如上所述。一旦启动应用程序,则该应用程序可下载内容或数据更新以及基于下载的数据更新应用程序用户界面。应用程序管理器106将不询问采样守护进程102是否可以启动与低优先级推送通知相关联的应用程序。
高优先级推送通知
在一些具体实施中,移动设备100接收的推送通知消息920可包括高优先级推送通知。例如,高优先级推送通知可指示内容更新可用于与推送通知相关联的应用程序。因此,当高优先级推送通知使得应用程序调用时,应用程序可从一个或多个网络资源下载更新的内容。在一些具体实施中,当推送服务守护进程904接收高优先级推送通知时,推送服务守护进程904可向应用程序管理器106发送高优先级推送通知而无需向采样守护进程102web作出准入控制请求。
在一些具体实施中,当应用程序管理器106接收与应用程序相关联的推送通知时,应用程序106将向采样守护进程102web作出准入控制请求。响应于准入控制请求,采样守护进程102可回复“是”、“否”或“从未”应答,如上所述。当应用程序管理器106接收对准入控制请求的“是”应答时,应用程序管理器106可将与接收到的高优先级推送通知相关联的应用程序作为移动设备100上的后台进程启动。
在一些具体实施中,当应用程序管理器106接收对准入控制请求“否”应答时,应用程序管理器106可将高优先级推送通知存储在高优先级推送通知存储装置936中。当应用程序管理器106接收“从未”应答时,应用程序管理器106可针对与推送通知相关联的应用程序删除高优先级推送通知以及存储在推送通知数据存储装置936中的任何推送通知。
在一些具体实施中,采样守护进程102可向应用程序管理器106发送“进行重试的确认”信号。例如,当应用程序管理器106从采样守护进程102接收“进行重试的确认”消息时,应用程序管理器106可向与高优先级推送通知数据存储装置936中的每个高优先级推送通知相关联的应用程序web作出准入控制请求并且当响应于准入控制请求接收到“是”应答时将各个应用程序作为后台进程启动。
延迟显示推送通知
在一些具体实施中,高优先级推送通知可使得图形用户界面显示在移动设备100上。例如,接收高优先级推送通知可使得标幅、气球或其他图形对象显示在移动设备100的图形用户界面上。图形对象例如可包括指示接收的推送通知的主题或内容的信息。
在一些具体实施中,当应用程序管理器106接收高优先级推送通知时,应用程序管理器106可使得通知显示在移动设备100的图形用户界面上。然而,当高优先级推送通知指示存在要下载的与高优先级推送通知相关联的应用程序的数据更新时,应用程序可在显示推送通知之前在移动设备100的后台启动。例如,应用程序管理器106可配置有在启动与高优先级推送通知相关联的应用程序以及显示将推送通知告知用户的图形对象(例如,标幅)之间延迟的时间量(例如,30秒)。该延迟例如可在用户调用之前允许应用程序有足够时间下载内容更新以及更新应用程序的用户界面。因此,当用户向图形对象提供输入或者以另外方式调用与高优先级推送通知相关联的应用程序时,应用程序的用户界面将保持为最新的并且用户将不会被迫使等待应用程序的更新。在一些具体实施中,如果应用程序管理器106不能启动与高优先级推送通知相关联的应用程序,则移动设备100将显示图形对象(例如,标幅)来通知用户接收到高优先级推送通知。
示例性推送通知进程
图10是用于在推送通知服务器906执行非唤醒推送的示例性进程1000的流程图。在步骤1002处,推送通知服务器906可接收推送通知。例如,推送通知服务器906可从推送通知提供商902(例如,应用程序供应商运营的服务器)接收推送通知。
在步骤1004处,推送通知服务器906可确定推送通知为低优先级推送通知。例如,推送通知提供商可在推送通知中包括指定推送通知的优先级的数据。推送通知服务器906可分析推送通知的内容来确定推送通知的优先级。
在步骤1006处,推送通知服务器906可将推送通知与推送通知过滤器进行比较。例如,推送通知可标识安装或配置在移动设备100上的引导低优先级推送通知的应用程序。推送应用程序例如可包括应用程序标识符(例如,“bundleId”属性值)。推送通知服务器906可将推送通知中的应用程序标识符与推送通知过滤器的非唤醒列表918中的应用程序标识符进行比较。
在步骤1008处,推送通知服务器906可确定将存储低优先级推送通知。例如,如果来自低优先级推送通知的应用程序标识符在推送通知过滤器的非唤醒列表918中,则推送通知服务器906可确定将低优先级推送存储在推送通知数据存储装置922中。
在步骤1010处,基于在步骤1008处的确定结果,低优先级推送通知将被存储在推送通知服务器906的数据库或数据存储装置922中而未立即发送到移动设备100。
在步骤1012处,推送通知服务器906可确定已建立与移动设备100的网络连接。例如,推送通知服务器906可创建与移动设备100的网络连接来输送另一高或低优先级推送。移动设备100可建立与推送通知服务器906的网络连接来向推送通知服务器906发送通知过滤器变化、周期性状态更新、保持活动消息或其他消息。
在步骤1014处,推送通知服务器906可响应于确定已建立与移动设备100的网络连接发送存储的推送通知。例如,推送通知服务器906可向移动设备100发送在推送通知服务器906处存储的低优先级推送通知。
图11是用于响应于低优先级推送通知执行应用程序的后台更新的示例性进程1100的流程图。在步骤1102处,移动设备100可从推送通知服务器906接收低优先级推送通知。
在步骤1104处,移动设备100可确定是否可以启动与低优先级推送通知相关联的应用程序。例如,应用程序可启动作为移动设备100上的后台进程。移动设备100可使用如上所述的准入控制进程确定是否可以启动应用程序。例如,移动设备100(例如,采样守护进程102)可基于针对移动设备100确定的数据、能量和/或属性预算确定是否可以启动应用程序。移动设备100可基于移动设备的状况、和/或基于来自各个投票者的应答的移动设备的网络连接的状况确定是否可以启动应用程序。参考上面图4更具体描述用于确定是否可以启动应用程序(例如,准入控制)的详情。
在步骤1106处,移动设备100可在设备状况、预算、限制和其他数据指示不可以启动应用程序时存储低优先级推送通知。例如,移动设备100可将低优先级推送通知存储在移动设备100上的数据库或其他数据存储装置中。
在步骤1108处,移动设备100可响应于确定不可以启动后台应用程序来更新其推送通知过滤器。例如,移动设备100可将与低优先级推送通知相关联的应用程序移动到移动设备100上的推送通知过滤器的非唤醒列表。
在步骤1110处,移动设备100可将更新的通知过滤器传输到推送通知服务器906。推送通知服务器906可基于从移动设备100接收的过滤器更新其自身推送通知过滤器以确定何时将低优先级推送通知传输和不传输到移动设备100。
在步骤1112处,移动设备100可确定可以重试启动与低优先级推送通知相关联的应用程序。例如,移动设备100可如上所述确定预算、限制和设备状况允许在移动设备100上启动另外的后台应用程序。
在步骤1114处,移动设备100可确定是否可以启动与存储的低优先级推送通知相关联的特定应用程序。例如,移动设备100的采样守护进程102可执行准入控制来确定在移动设备100上配置的预算在当前时间已复位或者填充以及移动设备100的环境状态以及网络连接足够好从而启动特定的后台应用程序。
在步骤1116处,移动设备100可在移动设备100确定可以启动特定应用程序时启动该应用程序。例如,特定应用程序可作为后台进程启动以在用户调用该应用程序之前下载新内容和更新该应用程序的用户界面。该进程将允许用户调用应用程序并且不必等待下载内容更新以及刷新应用程序的用户界面。
图12是用于响应于高优先级推送通知执行应用程序的后台更新的示例性进程1200的流程图。在步骤1202处,移动设备100可接收高优先级推送通知。
在步骤1204处,移动设备100可确定是否可以启动与高优先级推送通知相关联的应用程序。例如,移动设备100的采样守护进程102可执行准入控制以基于移动设备100的预算和环境状况(例如,设备状况、网络状况等等)确定是否可以启动应用程序。
在步骤1206处,移动设备100可在不可以启动与高优先级推送通知相关联的应用程序(例如,准入控制返回“否”)时存储高优先级推送通知。例如,移动设备100可将高优先级推送通知存储在数据库、队列或其他适合数据结构中。
在步骤1208处,移动设备100可确定可以重试启动与存储的高优先级推送通知相关联的应用程序。例如,移动设备100可在数据、能量和/或属性预算已填充、设备状况已改善、网络状况已改善或移动设备100的其他状况已改变时,确定可以重试启动应用程序,如以上在准入控制描述中所述。
在步骤1210处,移动设备100可确定是否可以启动与存储的高优先级推送通知相关联的应用程序。例如,移动设备100可基于上述准则确定是否确可以启动应用程序。
在步骤1212处,移动设备100可在移动设备100上的后台启动应用程序。例如,应用程序可启动作为移动设备100上的后台进程,使得应用程序可从网络(例如,互联网)上的网络资源(例如,内容服务器)下载更新的内容。
在步骤1214处,移动设备100可在将推送通知呈现给用户之前等待一段时间。例如,移动设备可被配置为在通知用户接收到的高优先级推送通知之前允许应用程序在一段时间内下载内容。
在步骤1216处,移动设备100可在移动设备100的用户界面上呈现推送通知。例如,移动设备100可呈现包括描述高优先级推送通知的信息的图形对象(例如,标幅)。用户例如可选择图形对象来调用应用程序。由于在为用户呈现该通知之前应用程序有时间下载内容,所以当用户调用该应用程序时,该应用程序将能够为用户显示更新的内容而不迫使用户等待从网络上下载更新内容。
后台上载/下载
图13是用于在移动设备100上执行数据的后台下载和/或上载的示例性系统1300的框图。后台下载和/或上载可为应用程序发起而无需来自用户的明确输入的网络数据传输。例如,后台下载可被执行在用户播放视频游戏应用程序时获取视频游戏的下一级。相反,前台下载或上载可为响应于来自用户的将发生下载或上载的明确指示所执行的网络数据传输。例如,前台下载可通过用户选择下载图片、电影或文档的网页链接来发起。类似地,后台上载可基于是否从用户接收将数据上载到网络资源(例如,服务器)的明确用户请求而不同于前台上载。
在一些具体实施中,可立即为用户执行前台下载/上载(例如,用户明确请求的下载/上载)。例如,用户请求的下载/上载被立即执行并且不受预算限制或其他考虑的影响。可通过蜂窝数据连接执行前台下载/上载。相反,可伺机以及在预选限制并考虑环境状况,诸如移动设备100的温度来执行后台下载和/或上载。例如,可在属性得到如上所述的准入控制机制批准时,针对该属性或属性值执行后台下载或上载。在一些具体实施中,后台下载和/或上载可限于Wi-Fi网络连接。
在一些具体实施中,系统1300可包括后台传输守护进程1302。在一些具体实施中,后台传输守护进程1302可配置为代表运行在移动设备100上的应用程序或进程执行数据或内容的后台下载和上载。例如,后台传输守护进程1302可代表应用程序1304在应用程序1304和服务器1306之间执行后台下载和/或上载。因此,可脱离应用程序1304的进程执行后台下载/上载(例如,未在/由请求下载/上载的进程执行)。
在一些具体实施中,应用程序1304可通过向后台传输守护进程1304发送下载或上载数据的请求来发起后台下载/上载。例如,下载数据(例如,内容)的请求可识别可下载数据的网络位置。上载数据的请求可识别可上载数据的网络位置和当前将数据存储在移动设备100上的位置。请求还可识别应用程序1304。一旦web作出请求,则应用程序1304可关闭或暂停使得应用程序在后台下载/上载正由后台传输守护进程1304执行时将不再继续消耗移动设备100上的计算/或网络资源。
在一些具体实施中,在接收到执行数据的后台上载或下载的请求时,后台传输守护进程1302可向采样守护进程102发送确定后台传输守护进程1302是否可以通过网络来执行数据传输的请求。例如,后台传输守护进程1302可请求采样守护进程102执行针对数据传输的准入控制。在准入控制请求中,后台传输守护进程1302可提供用于后台传输守护进程1302的标识符(例如,“bundleId”属性值)或者用于请求后台传输的应用程序的标识符,从而可对后台传输守护进程或应用程序执行准入控制。准入控制请求可包括将作为从跨系统数据预算扣除的请求成本而传输的数据量。
响应于从后台传输守护进程1302接收到准入控制请求,采样守护进程102可确定在当前小时内是否耗尽跨系统数据和/或能量预算。在一些具体实施中,如果采样守护进程102确定移动设备100连接到外部电源,则采样守护进程102将不会基于能量预算阻止后台下载/上载。采样守护进程102可确定移动设备100是否连接到Wi-Fi。采样守护进程102还可确定移动设备100是否处于热事件(例如,工作温度高于预定义阈值)中。在一些具体实施中,如果采样守护进程102确定数据预算已耗尽并且移动设备100未连接到Wi-Fi,能量预算已耗尽以及移动设备100未连接到外部电源,或者移动设备100处于热事件中,那么采样守护进程102将通过后台传输守护进程1302向准入控制请求返回“否”答复。
在一些具体实施中,当后台传输守护进程1302从采样守护进程102接收到对准入控制请求的“否”答复时,进程1302可将来自应用程序1304的后台下载/上载请求存储在请求储存库1308中。
在一些具体实施中,采样守护进程102可将重试信号发送到后台传输守护进程1302。例如,采样守护进程102可在数据和能量预算被填充时以及在系统不再经历热事件时向后台传输守护进程1302发送重试信号。采样守护进程102可在移动设备100连接到Wi-Fi以及外部电源时并且系统未经历热事件时向后台传输守护进程1302发送重试信号。例如,当连接到Wi-Fi时,可能不需要控制数据使用。类似地,当连接到外部电源时,可能不需要节省电池电力。因此,当执行准入控制时采样守护进程102可不考虑数据和能量预算。
在一些具体实施中,当后台传输守护进程1302接收重试信号时,后台传输守护进程1302可向采样守护进程102发送准入控制请求。如果采样守护进程102响应于准入控制请求返回“确认”应答,则后台传输守护进程1302可执行应用程序1304的后台下载或上载。一旦完成后台下载,则后台传输守护进程1302可唤醒或调用应用程序1304并且为应用程序1304提供下载的数据。
在一些具体实施中,后台传输守护进程1302可在后台下载/上载开始和结束时通知采样守护进程102使得采样守护进程102可调整预算并且保持对在移动设备100上执行的后台下载/上载的统计值。例如,后台传输守护进程1302可向采样守护进程102发送“backgroundTransfer”属性开始或停止事件。在一些具体实施中,后台传输守护进程1302可传输通过蜂窝数据、Wi-Fi传输的字节数(例如,“system.networkBytes”属性事件)和/或总共字节使得采样守护进程102可调整预算并且保持对在移动设备100上执行的后台下载/上载的统计值。
在一些具体实施中,采样守护进程102可响应于准入控制请求向后台传输守护进程1302返回超时值。例如,超时值可指示后台传输守护进程不得不执行后台下载或上载的时间段(例如,5分钟)。当超时时段经过时,后台传输守护进程1302将暂停后台下载或上载。
在一些具体实施中,超时值可基于当前小时的保留的能量预算。例如,采样守护进程102可确定在基于采样守护进程102采集的历史事件数据通过Wi-Fi执行下载或上载时每秒消耗的能量。采样守护进程102可通过将保留的能量预算除以执行后台下载或上载时消耗的能量的比率确定超时周期(例如,消耗的能量/预算/时间=超时周期)。
在一些具体实施中,后台下载和/或上载是可恢复的。例如,如果移动设备100移出Wi-Fi范围,则可中止(例如,暂停)后台下载/上载。当移动设备100重新进入Wi-Fi范围时,可恢复暂停的下载/上载。类似地,如果后台下载/上载消耗掉能量预算(例如,超时周期经过),则可暂停后台下载/上载。当分配另外预算(例如,在下一小时内)时,可恢复暂停的下载/上载。
在一些具体实施中,可基于网络连接的质量暂停后台下载/上载。例如,即使移动设备100可具有移动设备100和服务蜂窝塔之间的良好蜂窝数据连接以及蜂窝塔和移动设备100与其传输数据的服务器之间的良好数据连接,移动设备100也可能没有与服务器的良好连接。例如,移动设备100和服务器之间的传输率可能很低或者蜂窝接口的吞吐量可能很低。如果后台下载/上载的传输率落在阈值传输率值下和/或后台下载/上载的吞吐量落在阈值吞吐量下,可基于检测到的不良质量网络连接中止或暂停后台下载/上载(例如,数据传输)直到较好的网络连接可用为止。例如,如果Wi-Fi连接变得可用,则可恢复通过Wi-Fi连接的暂停的后台下载/上载。
在一些具体实施中,后台传输守护进程1302可配置有对可在某一时刻执行后台下载和/或上载的数量的限制。例如,后台传输守护进程1302可将同时后台下载和/或上载的数量限制为三个。
示例性后台下载/上载进程
图14是用于执行后台下载和上载的示例性进程1400的流程图。例如,可通过后台传输守护进程1302代表移动设备100上的应用程序执行后台下载和/或上载。
在步骤1402处,可接收后台传输请求。例如,后台传输守护进程1302可从运行在移动设备100上的应用程序接收后台下载/上载请求。例如,一旦应用程序web作出请求,可终止或暂停该应用程序。该请求可标识应用程序并且标识用于数据的源和/或目标位置。例如,当下载数据时,源位置可为服务器的网络地址而目标位置可为移动设备100的文件系统中的目录。当上载数据时,源位置可为文件系统位置而目标位置可为网络位置。
在步骤1404处,移动设备100可确定预算和设备状况不允许数据传输。例如,后台传输守护进程1302可通过向采样守护进程102web作出标识后台传输守护进程1302、执行后台传输的应用程序、和/或将要传输的数据量的准入控制请求,询问采样守护进程102是否可以执行所请求的后台传输。采样守护进程102可确定能量和数据预算是否耗尽以及移动设备100是否处于热事件之中。如果预算耗尽或者移动设备100处于热事件之中,采样守护进程102可向后台传输守护进程1302发送用于指示不可以执行后台数据传输(例如,准入控制返回“否”)的消息。
在步骤1406处,移动设备100可存储后台传输请求。例如,后台传输守护进程1302可在采样守护进程102响应于准入控制请求返回“否”值时将传输请求存储在传输请求储存库中。
在步骤1408处,移动设备100可确定可以重试后台传输。例如,采样守护进程102可确定数据和能量预算已经补充以及移动设备100未处于热事件之中。采样守护进程102可将重试消息发送到后台传输守护进程1302。后台传输守护进程1302随后可通过针对存储的传输请求中的每一个web作出另一准入控制请求来尝试执行存储在传输请求储存库中的所请求的传输。
在步骤1410处,移动设备100可确定移动设备100的预算和状况允许后台数据传输。例如,后台传输守护进程1302可询问采样守护进程102是否可以执行所请求的后台传输。采样守护进程102可执行准入控制来确定能量和数据预算已被补充以及移动设备100未处于热事件之中。如果预算未耗尽以及如果移动设备100未处于热事件之中,采样守护进程102可向后台传输守护进程1302发送用于指示可以执行后台数据传输的消息。
在步骤1412处,移动设备100可执行后台传输。例如,后台传输守护进程1302可针对请求的应用程序执行所请求的后台下载或后台上载。后台传输守护进程1302可在后台传输开始和结束(例如,使用“backgroundTransfer”属性开始和停止事件)时通知采样守护进程102。后台传输守护进程1302可发送消息通知采样守护进程在后台下载或上载(例如,使用“networkBytes”属性事件)期间传输的字节数。一旦后台传输完成,则后台传输守护进程1302可调用(例如,启动或唤醒)web作出后台传输请求的应用程序并且将完成状态信息(例如,成功、错误、下载数据,等)发送给请求的应用程序。
启用/禁用后台更新
图15示出了用于针对移动设备上的应用程序启用和/或禁用后台更新的示例性图形用户界面(GUI)1500。例如,GUI 1500可为呈现在移动设备100的显示器上的界面,用于接收用户输入来调整移动设备100上的应用程序的后台更新设置。
在一些具体实施中,GUI 1500的用户输入可基于用户调用预报启用或禁用针对应用程序的正执行的后台更新,如上所述。例如,采样进程102和/或应用程序管理器106可确定是否启用或禁用对于应用程序的后台更新以及防止应用程序被应用程序管理器106启用或者防止应用程序被包含在采样守护进程102生成的应用程序调用预报中。例如,如果禁用应用程序的后台更新,则采样守护进程102将不把应用程序包含在应用程序管理器106请求的用户调用的应用程序预报中。因此,应用程序管理器106将在禁用后台更新时不启动应用程序。相反,如果启用应用程序的后台更新,则应用程序可基于用户调用概率被包含在采样守护进程102生成的应用程序调用预报中。
在一些具体实施中,GUI 1500的用户输入可在接收到推送通知时启用或禁用针对应用程序的正执行的后台更新,如上所述。例如,采样守护进程102、应用程序管理器106和/或推送服务守护进程904可响应于接收到推送通知确定是否启用或禁用对应用程序的后台更新以及阻止应用程序管理器106启动该应用程序。例如,如果禁用对应用程序的后台更新以及接收到针对该应用程序的推送通知,则应用程序管理器106将响应于推送通知不启动应用程序来下载更新。
在一些具体实施中,GUI 1500可显示已配置为执行后台更新的应用程序1502-1514。例如,应用程序1502-1514可配置或编程为在由应用程序管理器106启动时作为移动设备100上的后台进程运行。当作为后台进程运行时,应用程序1502-1514可与各种网络资源通信来下载当前或更新的内容。应用程序1502-1514随后可在移动设备100的用户调用时更新其各个用户界面来呈现更新的内容。在一些具体实施中,未配置或编程来执行后台更新的应用程序将不显示在GUI 1500上。
在一些具体实施中,用户可提供对GUI 1500的输入来启用和/或禁用应用程序的后台更新。例如,用户可相对于打开或关闭对应用程序1502的后台更新的来回切换1516来为移动设备102提供输入(例如,触摸输入)。用户可相对于打开或关闭对应用程序1508的后台更新的来回切换1518来为移动设备102提供输入(例如,触摸输入)。
在一些具体实施中,可通过GUI 1500指定另外的选项用于后台更新应用程序。例如,用户可选择与应用程序1514相关联的图形对象1510来调用图形用户界面(未示出)用于指定另外的后台更新选项。后台更新选项例如可包括用于打开和/或关闭对应用程序1514的后台更新的开始时间和结束时间。
在对等设备之间共享数据
图16示出了用于在对等设备之间共享数据的示例性系统。在一些具体实施中,移动设备100可与移动设备1600共享事件数据、系数数据和/或事件预报。例如,移动设备100和移动设备1600可为同一用户所拥有的设备。因此,可能有利的是在移动设备100和移动设备1600之间的每个设备上共享有关用户活动的信息。
在一些具体实施中,移动设备1600可类似于移动设备100进行配置,如上所述。例如,移动设备1600可配置有提供在以上段落中描述的功能(例如,属性、属性事件、预报、准入控制,等等)的采样守护进程1602。
在一些具体实施中,移动设备100和移动设备1600可分别配置有身份服务守护进程1620和身份服务守护进程1610。例如,身份服务守护进程1620和1610可配置为在移动设备100和移动设备1600之间传达信息。身份服务守护进程可用来通过各种对等和网络连接在同一用户所拥有的设备之间共享数据。例如,身份服务守护进程1620和身份服务守护进程1610可通过蓝牙、蓝牙低功耗、Wi-Fi、LAN、WAN和/或互联网连接交换信息。
在一些具体实施中,采样守护进程1602(和采样守护进程102)可配置为与在同一用户所拥有的其他设备上运行的其他采样守护进程共享事件预报信息和系统状态信息。例如,如果移动设备100和移动设备1600为同一用户所拥有,则采样守护进程102和采样守护进程1602可交换事件预报信息和/或系统状态信息(例如,电池状态)。例如,采样守护进程1602可使用身份服务守护进程1610发送事件预报信息和/或系统状态信息。身份服务守护进程1610可建立与身份服务守护进程1620的连接并且通过身份服务守护进程1620将事件预报信息和/或移动设备1600系统状态信息传达到采样守护进程102。
在一些具体实施中,应用程序1608(例如,采样守护进程1602的客户端)可请求采样守护进程1602将针对指定属性或属性值的事件预报发送到采样守护进程102。例如,应用程序1608可为与移动设备100的应用程序108同步的应用程序。例如,应用程序108和1608可为配置为在移动设备100和移动设备1600之间同步数据(例如,媒体文件、消息、状态信息等等)的媒体应用程序(例如,音乐库、视频库、电子邮件应用程序、即时消息应用程序等等)。
在一些具体实施中,为了允许对等设备(例如,移动设备100)确定何时同步设备之间的数据,应用程序1608可请求采样守护进程1602基于移动设备1600生成的属性事件数据来生成“bundleId”属性或特定“bundleId”属性值(例如,用于应用程序1608的应用程序标识符)的临时和/或对等预报并且将预报传输到采样守护进程102。例如,对等设备可为同一用户所拥有的远程设备(例如,非当前本地设备)。移动设备100例如可为移动设备1600的对等设备。
在一些具体实施中,请求的客户端(例如,应用程序1608)可指定输送的调度和预报数据的持续时间。例如,应用程序1608可请求针对“bundleId”属性值“mailapp”的对等和/或临时预报。应用程序1608例如可请求每周生成和交换预报以及每个预报包含一周的某一持续时间或某个时间段。
在一些具体实施中,可静态调度对等设备之间的数据交换。采样守护进程1602可在严格调度情况下(例如,每24小时的应用程序预报和电池统计值)发送移动设备100有必要对移动设备1600的远程状态具有一致视图的属性数据。在一些具体实施中,客户端可向对等设备请求根据要求的属性预报或统计值。这些交换是非复发性的。当接收到请求的数据时可通知请求的客户端。
在一些具体实施中,采样守护进程1602可将移动设备1600的系统状态数据传输到采样守护进程102。例如,采样守护进程1602可接收电池电量水平事件(例如,“batteryLevel”属性事件)、电池充电事件(例如,“cableplugin”事件)、能量使用事件(例如,“能量”属性事件)和/或可用来生成电池使用和充电统计值的其他事件并且将电池相关事件数据传输到采样守护进程102。例如,可每24小时交换电池状态信息。可伺机交换电池状态信息。例如,当在移动设备100和移动设备1600之间建立通信信道(例如,对等、联网等等)时,移动设备可伺机使用已经打开的通信信道交换电池状态或其他系统状态信息(例如,当前前台应用程序的标识)。
作为另一示例,采样守护进程1602可接收热水平事件(例如,“thermalLevel”属性事件)、网络事件(例如,“networkQuality”属性事件、“networkBytes”属性事件)并且将热和/或网络事件传输到采样守护进程102。采样守护进程1602可从应用程序管理器106接收指示当前在移动设备1600的前台的那些应用程序(例如,应用程序标识符)的事件(例如,“system.foregroundApp”属性事件)并且将该前台应用程序信息传输到采样守护进程102。在一些具体实施中,在事件一发生(例如,在对等设备之间一建立连接),就可与对等设备交换热事件和前台应用程序变化信息。在一些具体实施中,可周期性地交换网络状态信息(例如,每天一次、每天两次、每小时,等等)。
在从采样守护进程1602接收预报事件数据和/或系统事件数据时,采样守护进程102可将预报数据和/或事件数据存储在对等数据存储装置1622中。类似地,采样守护进程1602从采样守护进程102接收的任何预报数据和/或事件数据可存储在对等数据存储装置1612中。在一些具体实施中,从另一设备接收的预报数据和/或事件数据可与设备描述相关联。例如,设备描述可包括设备名、设备标识符和标识设备的型号的型号标识符。可使用设备描述来在对等数据存储装置1622中查询设备的预报数据和/或事件数据。一旦移动设备100和移动设备1600已交换预报数据和/或事件数据,移动设备可使用交换的信息来确定何时使用下文的远程准入控制机制彼此通信。通过仅在需要信息时以及设备的电池状态可支持共享信息时允许设备共享信息,可改善通信的电力管理。
远程准入控制
在一些具体实施中,移动设备100(或移动设备1600)可基于从另一设备接收的数据执行准入控制。例如,采样守护进程102可基于从采样守护进程1602接收并且在对等数据存储装置1622中存储的预报和系统事件数据执行准入控制。例如,为了与应用程序1608同步数据,应用程序108可向身份服务守护进程1620发送同步消息。例如,同步消息可包括移动设备100的标识符、移动设备1600的标识符、优先级标识符(例如,高、低)和消息有效载荷(例如,要同步的数据)。
低优先级消息
在一些具体实施中,可在经过准入控制后传输低优先级消息。例如,低优先级消息可为与自由处理(例如,后台应用程序、系统实体、预期活动、并非由用户发起的活动)相关联的消息。例如,身份服务守护进程1620可向采样守护进程102发送属于应用程序1608的数据包标识符的“bundleId”属性值(例如,“bundleId”=“1608”)的准入控制请求。除了“bundleId”属性名和值(例如,“1608”)之外,身份服务守护进程1620可在准入控制请求中提供设备名(例如,“设备1600”)来指示应用程序108请求与另一设备进行通信的准入控制。
在一些具体实施中,响应于接收准入控制请求,采样守护进程102可执行本地准入控制和远程准入控制。例如,采样守护进程102可如上所述执行本地准入控制来确定移动设备100的状态是否允许与指定的属性值(例如,“bundleId”=“1608”)相关联的事件发生。采样守护进程102例如可核查本地能量、数据和属性预算,以及查询投票者反馈来确定移动设备100的状态是否允许与指定的属性值(例如,“bundleId”=“1608”)相关联的事件。
除了执行本地准入控制之外,采样守护进程102可基于从移动设备1600接收并存储在对等数据存储装置1622中的“bundleId”属性预报、事件数据和系统数据执行远程准入控制。例如,采样守护进程102可使用设备标识符(例如,“设备1600”、设备名、唯一标识符、UUID等等)来在对等数据存储装置1622中定位与移动设备1600相关联的数据。采样守护进程102可分析从采样守护进程1602接收的属性(例如,“bundleId”)预报数据来确定在当前15分钟时隙中应用程序1608是否有可能被移动设备1600上的用户调用。如果应用程序1608在当前15分钟时隙内没有可能被用户调用,则采样守护进程102可响应于准入控制请求返回“否”值。例如,通过允许应用程序108仅在应用程序1608有可能在移动设备1600上被使用时与应用程序1608同步,则采样守护进程102可延迟同步进程并且节省系统资源(例如,电池、CPU周期、网络数据)直到用户有可能使用移动设备1600上的应用程序1608时为止。
在一些具体实施中,如果应用程序1608在当前15分钟时隙内有可能由移动设备1600的用户调用,则采样守护进程102可核查与移动设备1600相关联并且存储在对等数据存储装置1622中的系统数据。例如,采样守护进程102可核查与移动设备1600相关联的系统数据来确定移动设备1600是否具有足够保留的电池电荷来执行应用程序108与应用程序1608之间的同步。例如,采样守护进程102可核查是否存在足够电池电荷来完成应用程序108与应用程序1608之间的同步。采样守护进程102可核查是否存在足够电池电荷来执行同步以及继续工作直到下一次预期的电池再充电(例如,“cablePlugin”属性事件)为止。例如,采样守护进程102可为“cablePlugin”属性生成标识下一个“cablePlugin”属性事件有可能何时发生的临时预报。采样守护进程102可分析能量使用统计值(事件)来预测能量使用直到下一次“cablePlugin”事件为止并且确定是否存在足够多余能量服务于应用程序108与应用程序1608之间的同步传输。如果采样守护进程102确定移动设备1600没有足够能量(例如,电池电荷)服务于同步,则采样守护进程102可响应于远程准入控制请求返回“否”值。
在一些具体实施中,采样守护进程102可核查与移动设备1600相关联的系统数据来确定移动设备1600是否处于正常热状态(例如,不是太热)并且可处理同步请求。例如,如果从移动设备1600接收到的“thermalLevel”属性事件数据指示移动设备1600当前正工作在高于阈值的温度下,则采样守护进程102可通过响应于远程准入控制请求返回“否”值来阻止同步通信。
在一些具体实施中,当预报数据指示用户有可能调用移动设备1600上的应用程序1608以及能量、热和其他系统状态信息指示移动设备1600的状况能处理来自移动设备100的通信时,采样守护进程102可响应于该准入控制请求向身份服务守护进程1620返回“是”值。响应于针对准入控制请求接收到“是”值,身份服务守护进程1620可将应用程序108的同步消息传输到移动设备1600上的身份服务守护进程1610。应用程序108和应用程序1608随后可通过身份服务守护进程1620和身份服务守护进程1610交换消息来同步数据。
在一些具体实施中,可在经过远程准入控制后传输高优先级消息。例如,高优先级消息可为与用户发起的任务相关联的消息,诸如与前台应用程序相关联的消息或响应于用户提供输入生成的消息。在一些具体实施中,可类似于低优先级消息处理高优先级消息的准入控制。然而,当执行高优先级消息的远程准入控制时,可承认(允许)高优先级消息而无需考虑属性预报数据(例如,“bundleId”预报数据),因为高优先级消息通常由某个用户动作触发而不是由某个自由后台任务发起。
在一些具体实施中,当执行对高优先级消息的准入控制时,可核查远程设备(例如,移动设备1600)的电池状态以确保远程设备(例如,对等设备)具有足够电池电荷可用于处理高优先级消息。如果存在足够电池电荷可用于移动设备,则远程准入控制将批准高优先级消息。例如,采样守护进程102可在存在足够的保留电池电荷来处理高优先级消息时响应于远程准入请求将“是”值传输到身份服务守护进程1620。如果不存在足够电池电荷可用于移动设备,则远程准入控制将拒绝高优先级消息。例如,采样守护进程102可在存在足够的保留电池电荷来处理高优先级消息时响应于远程准入请求将“否”值传输到身份服务守护进程1620。因此,身份服务守护进程1620将在对等设备具有足够保留的电池电荷来处理讨论中的消息时发起与对等设备(例如,移动设备1600)的通信。
在一些具体实施中,当采样守护进程102被通知高优先级消息时,采样守护进程102可将当前电池状态信息(例如,当前电池水平)发送到身份服务守护进程1620。身份服务守护进程1620随后可将电池状态信息添加到高优先级消息。因此,系统状态信息可通过在移动设备100和移动设备1600之间传输的其他消息中捎带电池状态信息(或其他信息,例如,热水平、前台应用程序等等)有效地在设备之间共享。
在一些具体实施中,采样守护进程102可将重试消息发送到身份服务守护进程1620。例如,当移动设备100或移动设备1600上的状况改变(例如,电池状况改善)时,采样守护进程102可向身份服务守护进程1620发送重试消息。在一些具体实施中,当远程焦点应用程序变化时可生成重试消息。例如,如果远程对等设备上的用户正使用“mailapp”应用程序,则“mailapp”应用程序变为焦点应用程序。当用户开始使用“webbrowser”应用程序时,焦点应用程序变为“webbrowser”应用程序。当对等数据在移动设备100与移动设备1600之间交换时,焦点应用程序的变化可作为事件报告给采样守护进程1602,并且传输到采样守护进程102。在接收到指示对等设备1602上的焦点应用程序的变化的事件信息时,采样守护进程102可向身份服务守护进程1620发送重试消息。身份服务守护进程1620随后可重试由采样守护进程102拒绝的每个消息的准入控制。例如,在从采样守护进程102接收到重试消息时,身份服务守护进程1620可存储拒绝的消息(例如,传输任务)并且通过准入控制发送被拒绝的消息。在一些具体实施中,可在经过一段时间之后传输被拒绝的消息。例如,可在经过可配置的时间段之后,将未通过准入控制的消息发送到对等设备。
在一些具体实施中,在采样守护进程102指示移动设备100或移动设备1600上的状况变化时,身份服务守护进程1620可中断数据流传输。例如,如果采样守护进程102确定移动设备100或移动设备1600上的电池状况已改变使得移动设备中的一个可能消耗光电池电力,则采样守护进程102可告知身份服务守护进程1620停止传输以及重试与数据流相关联的属性事件的准入控制。
用于在对等设备之间共享数据的进程
图17示出了用于在对等设备之间共享数据的示例性进程1700。在上文参考图16可见对进程1700的另外详情。在步骤1702处,移动设备可从对等设备接收事件数据。例如,事件数据可作为“摘要”(例如,预报、统计值等等)或原始(例如,未处理的)事件数据来共享。例如,当第二设备和移动设备由同一用户所拥有时,第二设备(例如,移动设备1600)为移动设备100的对等设备。移动设备100可接收与移动设备1600的系统状态(例如,电池状态、网络状态、前台应用程序标识符等等)有关的事件数据。移动设备可基于在移动设备1600上已发生的事件从移动设备1600接收属性事件预报、统计值或原始事件数据。例如,对等设备1600上的应用程序1608可指示对等设备1600上的采样守护进程1602生成对特定属性或属性值的预报并将预报发送到移动设备100。
在步骤1704处,移动设备100上的身份服务守护进程1620可接收传输到对等设备1600的消息。例如,在移动设备上运行的应用程序108可能需要与对等设备1600上的对应应用程序1608共享、交换或同步数据。应用程序108可将包含将要共享的数据的消息发送到身份服务守护进程1620。
在步骤1706处,移动设备100上的采样守护进程102可基于从对等设备1600接收的数据来确定是否传输该消息。例如,采样守护进程102可执行本地准入控制核查以及远程准入控制核查来确定在当前时间是否将消息发送到对等设备1600。如果从对等设备1600接收的属性事件预报指示对等设备1600的用户在当前时间有可能调用应用程序1608以及如果事件数据指示对等设备1600的状况(例如,电池状态、热水平等等)如此使得发起与对等设备1600的通信将不会耗尽电池或者使得热状态更差,则采样守护进程102可批准该消息的传输。
在步骤1708处,一旦采样守护进程102执行准入控制并且批准发起与对等设备1600的通信时,身份服务守护进程1620可将该消息传输到对等设备1600。例如,身份服务守护进程1620可将该消息传输到对等设备1600的身份服务守护进程1610。身份服务守护进程1610随后可将消息传输到应用程序1608使得应用程序108和应用程序1608可同步数据。
示例性系统架构
图18是一个可实现图1-图17的特征和进程的示例性计算设备1800的框图。计算设备1800例如可为智能电话、平板电脑、膝上型计算机、可穿戴设备(例如,表)、机顶盒或车辆媒体系统。计算设备1800可以包括存储器接口1802、一个或多个数据处理器、图像处理器和/或中央处理单元1804,以及外围设备接口1806。存储器接口1802、一个或多个处理器1804和/或外围设备接口1806可为独立部件,或者可集成到一个或多个集成电路中。计算设备1800中的各种部件可由一条或多条通信总线或信号线耦合。
可将传感器、设备和子系统耦合到外围设备接口1806以有利于多个功能性。例如,可以将运动传感器1810、光传感器1812和接近传感器1814耦合到外围设备接口1806以有利于取向、照明和接近功能。也可以将其他传感器1816连接到外围设备接口1806,例如全球导航卫星系统(GNSS)(如GPS接收器)、温度传感器、生物测定传感器、磁力仪或其他感测设备,以有利于相关功能。
可利用照相机子系统1820和光学传感器1822(例如,电荷耦合器件(CCD)或互补金属氧化物半导体(CMOS)光学传感器)来有利于照相机功能,例如拍摄照片和视频剪辑。照相机子系统1820和光学传感器1822可用于收集要在认证用户期间使用的用户的图像,例如通过进行面部识别分析。
可通过一个或多个无线通信子系统1824来方便通信功能,所述无线通信子系统可包括射频接收器与发射器和/或光学(如红外)接收器与发射器。通信子系统1824的具体设计与实现可取决于计算设备1800旨在通过其工作的通信网络。例如,计算设备1800可包括设计用于通过GSM网络、GPRS网络、EDGE网络、Wi-Fi或WiMax网络以及BluetoothTM网络工作的通信子系统1824。具体地讲,无线通信子系统1824可包括主机协议使得设备100可被配置为其他无线设备的基站。
可将音频子系统1826耦合到扬声器1828和麦克风1830以有利于启用语音的功能,例如讲话者识别、语音复制、数字记录和电话功能。可以配置音频子系统1826以有利于例如处理语音命令、声纹鉴别和语音认证。
I/O子系统1840可以包括触摸表面控制器1842和/或其他输入控制器1844。触摸表面控制器1842可以耦合到触摸表面1846。触摸表面1846和触摸表面控制器1842例如能够利用多种触敏技术的任何一种检测接触和运动或其中断,触敏技术包括但不限于电容性、电阻性、红外和表面声波技术,以及用于确定与接触表面1846接触的一个或多个点的其他接近传感器阵列或其他元件。
可将一个或多个其他输入控制器1844耦接到其他输入/控制设备1848,诸如一个或多个按钮、摇臂开关、拇指滚轮、红外端口、USB端口和/或指针设备(例如触笔)。所述一个或多个按钮(未示出)可包括用于扬声器1828和/或麦克风1830的音量控制的增大/减小按钮。
在一个具体实施中,按压按钮第一持续时间可解除对触摸表面1846的锁定,按压按钮比第一持续时间长的第二持续时间可打开或关闭对计算设备1800的供电。将按钮按下,第三持续时间能够激活语音控制或语音命令、使用户能够向麦克风1830中说出命令的模块,以令设备执行所说的命令。用户能够定制一个或多个按钮的功能。例如,也可以使用触摸表面1846实现虚拟或软按钮和/或键盘。
在一些具体实施中,计算设备1800能够呈现记录的音频和/或视频文件,例如MP3、AAC和MPEG文件。在一些具体实施中,计算设备1800能够包括MP3播放器,诸如iPodTM的功能。
存储器接口1802可以耦合到存储器1850。存储器1850可包括高速随机存取存储器和/或非易失性存储器,诸如一个或多个磁盘存储设备、一个或多个光学存储设备,和/或闪存存储器(例如NAND、NOR)。存储器1850可存储操作系统1852,例如Darwin、RTXC、LINUX、UNIX、OS X、WINDOWS或嵌入式操作系统(如VxWorks)。
操作系统1852可包括用于处理基础系统服务以及用于执行硬件相关任务的指令。在一些具体实施中,操作系统1852可以是内核(如UNIX内核)。在一些具体实施中,操作系统1852可包括用户基于用户活动执行对移动设备的动态调整的指令。例如,操作系统1852可实现动态调整特征,如参考图1-图17所述。
存储器1850还可存储通信指令1854以有利于与一个或多个附加设备、一个或多个计算机和/或一个或多个服务器通信。存储器1850可包括图形用户界面指令1856以有助于图形用户界面处理;传感器处理指令1858以用助于传感器相关的处理和功能;电话指令1860以用助于电话相关的处理和功能;电子消息指令1862以用助于电子消息相关的处理和功能;web浏览指令1864以有助于web浏览相关的处理和功能;媒体处理指令1866以用助于媒体处理相关的处理和功能;GNSS/导航指令1868以用助于GNSS和导航相关的处理和指令;和/或相机指令1870以有助于相机相关的处理和功能。
存储器1850可存储其它软件指令1872以促进其他处理和功能,诸如参考图1-图17所述的动态调整处理和功能。
存储器1850还可存储其他软件指令1874,例如用于方便与网络视频相关的过程和功能的网络视频指令,和/或用于方便与网上购物相关的过程和功能的网上购物指令。在一些具体实施中,媒体处理指令1866分为音频处理指令和视频处理指令,分别用于方便与音频处理相关的过程和功能以及与视频处理相关的过程和功能。
上面标识的指令和应用程序中的每一者均可与用于执行上述一个或多个功能的指令集对应。这些指令不需要作为独立的软件程序、进程或模块来实施。存储器1850可包括另外的指令或更少的指令。此外,可在硬件和/或软件中,包括在一个或多个信号处理和/或专用集成电路中,执行计算设备1800的各种功能。
在一些具体实施中,计算机可读存储设备、介质、存储器可包括包含位流等的电缆或无线信号。然而,在提及时,非暂态计算机可读存储介质明确地排除诸如能量、载波信号、电磁波、和信号本身这样的介质。
尽管使用各种示例和其他信息描述所附权利要求的范围的方面,但是如本领域技术人员能使用这些示例导出种类众多的具体实施,不应当基于这种示例中的特定特征或布置对权利要求施加限制。进一步以及尽管以特定于结构特征和/或方法步骤的示例的语言对一些主题进行了描述,但应当理解,所附权利要求中限定的主题并不一定限于这些所述特定特征或行为。例如,这种功能可以不同方式分发或者在本文所标识的那些部件之外的部件中执行。相反,所述特征和步骤被披露作为所附权利要求的范围内的系统部件和方法的示例。
Claims (18)
1.一种用于基于对等事件数据来对移动设备进行动态调整的方法,所述方法包括:
接收对允许发生与属性的指定值相关联的事件进行投票的请求;
从在移动设备上执行的采样守护进程请求针对与一个或多个位置相关联的所述属性的全景预报,其中所述全景预报包括与所述属性相关联的多个值中的每个值的分数,针对所述多个值中的每个值的分数指示所述属性的所述多个值中的每个值在所述一个或多个位置处发生的相对可能性;
接收全景预报,所述全景预报包括包含指定的属性值的与所述属性相关联并且被预测为在所述一个或多个位置处发生的所述多个值中的每个值的分数;以及
基于指定的属性值的分数进行投票以允许所述事件。
2.根据权利要求1所述的方法,还包括:
确定所述多个值中的若干个分数最高的属性值;以及
响应于确定指定的属性值被包括在所述若干个分数最高的属性值中,进行投票以允许所述事件。
3.根据权利要求1所述的方法,还包括:
响应于确定指定的属性值不被包括在所述多个值中,进行投票以阻止所述事件。
4.根据权利要求1所述的方法,还包括:
确定所述多个值中的若干个分数最低的属性值;以及
响应于确定指定的属性值被包括在所述若干个分数最低的属性值中,进行投票以阻止所述事件。
5.根据权利要求1所述的方法,其中在第一时间接收所述请求,其中在与第一时间对应的感兴趣的时间段期间,针对所述属性的全景预报还与网络质量数据相关联,并且其中所述多个值中的每个值的分数还指示所述属性的所述多个值中的每个值在与对应的网络质量数据相关联的感兴趣的时间段期间发生的相对可能性。
6.一种用于基于对等事件数据来对移动设备进行动态调整的系统,所述系统包括:
一个或多个处理器;和
非暂态计算机可读介质,所述非暂态计算机可读介质包括一个或多个指令序列,所述一个或多个指令序列当由所述一个或多个处理器执行时导致:
接收对允许发生与属性的指定值相关联的事件进行投票的请求;
从在移动设备上执行的采样守护进程请求针对与一个或多个位置相关联的所述属性的全景预报,其中所述全景预报包括与所述属性相关联的多个值中的每个值的分数,针对所述多个值中的每个值的分数指示所述属性的所述多个值中的每个值在所述一个或多个位置处发生的相对可能性;
接收全景预报,所述全景预报包括包含指定的属性值的与所述属性相关联并且被预测为在所述一个或多个位置附近发生的所述多个值中的每个值的分数;以及
基于指定的属性值的分数进行投票以允许所述事件。
7.根据权利要求6所述的系统,其中,所述指令导致:
确定所述多个值中的若干个分数最高的属性值;以及
响应于确定指定的属性值被包括在所述若干个分数最高的属性值,进行投票以允许所述事件。
8.根据权利要求6所述的系统,其中,所述指令导致:
响应于确定指定的属性值不被包括在所述多个值中,进行投票以阻止所述事件。
9.根据权利要求6所述的系统,其中,所述指令导致:
确定所述多个值中的若干个分数最低的属性值;以及
响应于确定指定的属性值被包括在所述若干个分数最低的属性值中,进行投票以阻止所述事件。
10.根据权利要求6所述的系统,其中在第一时间接收所述请求,其中在与第一时间对应的感兴趣的时间段期间,针对所述属性的全景预报还与网络质量数据相关联,并且其中所述多个值中的每个值的分数还指示所述属性的所述多个值中的每个值在与对应的网络质量数据相关联的感兴趣的时间段期间发生的相对可能性。
11.一种用于基于从启发式进程接收的部件设置来调整移动设备的部件的设置的方法,所述方法包括:
通过在移动设备上执行的采样守护进程对启发式进程进行初始化;
向采样守护进程注册启发式进程,以使启发式进程接收移动设备的事件数据;
通过启发式进程,从采样守护进程获取事件数据;
通过启发式进程,确定针对由事件数据指定的属性的对等预报;
通过启发式进程,基于事件数据和对等预报,确定移动设备的部件设置;以及
通过启发式进程,将部件设置传输至移动设备的控制复用器,以调整移动设备的一个或多个部件的设置。
12.根据权利要求11所述的方法,其中对等预报指示:(a)所述属性的一个或多个值在时间段期间相对于所述属性的所有值发生的相对可能性;或(b)在所述时间段内所述属性的所有值的概率分数。
13.根据权利要求11所述的方法,其中向采样守护进程注册启发式进程包括向采样守护进程发送消息,所述消息包括选自包括以下各项的组的信息:一个或多个事件的标识、一个或多个阈值的指示、一个或多个属性的标识、以及与所述一个或多个属性相关联的至少一个值。
14.根据权利要求13所述的方法,还包括响应于以下之一而调用启发式进程:采样守护进程观测到所述一个或多个事件的发生、采样守护进程观测到所述一个或多个阈值被实现、或者采样守护进程观测到一个或多个属性中的至少一个属性的至少一个值。
15.根据权利要求11所述的方法,还包括:在向采样守护进程注册启发式进程之后,终止启发式进程。
16.根据权利要求15所述的方法,还包括响应于以下之一而重启启发式进程:采样守护进程观测到事件的发生、采样守护进程观测到阈值被实现、或者采样守护进程观测到属性的值,其中所述属性的值、阈值和事件通过启发式进程被提供给采样守护进程。
17.根据权利要求16所述的方法,其中事件数据与选自包括以下各项的组的一个或多个系统部件相关:应用程序管理器、传感器、日历和时钟。
18.根据权利要求15所述的方法,还包括响应于采样守护进程确定移动设备的显示器关闭并且移动设备不播放音频而重启述启发式进程,其中移动设备的部件设置被设置为减少处理器功耗以降低移动设备的工作温度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010103608.2A CN111176698B (zh) | 2014-05-30 | 2015-05-07 | 基于对等事件数据来对移动设备进行动态调整 |
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462005945P | 2014-05-30 | 2014-05-30 | |
US62/005,945 | 2014-05-30 | ||
US14/503,257 | 2014-09-30 | ||
US14/503,257 US9432796B2 (en) | 2014-05-30 | 2014-09-30 | Dynamic adjustment of mobile device based on peer event data |
CN202010103608.2A CN111176698B (zh) | 2014-05-30 | 2015-05-07 | 基于对等事件数据来对移动设备进行动态调整 |
PCT/US2015/029774 WO2015183515A1 (en) | 2014-05-30 | 2015-05-07 | Dynamic adjustment of mobile device based on peer event data |
CN201580027844.8A CN106462453B (zh) | 2014-05-30 | 2015-05-07 | 基于对等事件数据来对移动设备进行动态调整 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580027844.8A Division CN106462453B (zh) | 2014-05-30 | 2015-05-07 | 基于对等事件数据来对移动设备进行动态调整 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111176698A CN111176698A (zh) | 2020-05-19 |
CN111176698B true CN111176698B (zh) | 2023-09-01 |
Family
ID=53180895
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010103608.2A Active CN111176698B (zh) | 2014-05-30 | 2015-05-07 | 基于对等事件数据来对移动设备进行动态调整 |
CN201580027844.8A Active CN106462453B (zh) | 2014-05-30 | 2015-05-07 | 基于对等事件数据来对移动设备进行动态调整 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580027844.8A Active CN106462453B (zh) | 2014-05-30 | 2015-05-07 | 基于对等事件数据来对移动设备进行动态调整 |
Country Status (4)
Country | Link |
---|---|
US (3) | US9432796B2 (zh) |
KR (5) | KR101996263B1 (zh) |
CN (2) | CN111176698B (zh) |
WO (1) | WO2015183515A1 (zh) |
Families Citing this family (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10223156B2 (en) | 2013-06-09 | 2019-03-05 | Apple Inc. | Initiating background updates based on user activity |
US10218582B2 (en) * | 2013-09-26 | 2019-02-26 | Apple Inc. | Notifications with input-based completion |
US10033693B2 (en) | 2013-10-01 | 2018-07-24 | Nicira, Inc. | Distributed identity-based firewalls |
US9432796B2 (en) | 2014-05-30 | 2016-08-30 | Apple Inc. | Dynamic adjustment of mobile device based on peer event data |
US9979796B1 (en) | 2014-07-16 | 2018-05-22 | Tensera Networks Ltd. | Efficient pre-fetching notifications |
US11095743B2 (en) | 2014-07-16 | 2021-08-17 | Tensera Networks Ltd. | Optimized content-delivery network (CDN) for the wireless last mile |
CN106664592B (zh) | 2014-07-16 | 2020-08-18 | 腾赛拉网络有限公司 | 用于内容分发的方法和系统及相应的计算机可读介质 |
US10506027B2 (en) | 2014-08-27 | 2019-12-10 | Tensera Networks Ltd. | Selecting a content delivery network |
US9891940B2 (en) | 2014-12-29 | 2018-02-13 | Nicira, Inc. | Introspection method and apparatus for network access filtering |
WO2016128885A1 (en) * | 2015-02-09 | 2016-08-18 | Laurus Labs Private Limited | A process for preparation of cobicistat |
CN106201839B (zh) | 2015-04-30 | 2020-02-14 | 阿里巴巴集团控股有限公司 | 一种业务对象的信息加载方法和装置 |
US9723470B1 (en) | 2015-04-30 | 2017-08-01 | Tensera Networks Ltd. | Selective enabling of data services to roaming wireless terminals |
US10491708B2 (en) | 2015-06-05 | 2019-11-26 | Apple Inc. | Context notifications |
US9915988B2 (en) | 2015-09-22 | 2018-03-13 | Sandisk Technologies Llc | Data storage device for a device accessory |
CN106547582A (zh) * | 2015-09-22 | 2017-03-29 | 阿里巴巴集团控股有限公司 | 一种预处理方法及装置 |
WO2017064586A1 (en) | 2015-10-15 | 2017-04-20 | Tensera Networks Ltd. | Freshness-aware presentation of content in communication terminals |
US10324746B2 (en) | 2015-11-03 | 2019-06-18 | Nicira, Inc. | Extended context delivery for context-based authorization |
GB2545008B (en) * | 2015-12-03 | 2017-11-22 | F Secure Corp | Behaviour based malware prevention |
CN108369665B (zh) * | 2015-12-10 | 2022-05-27 | 爱维士软件有限责任公司 | (移动)应用程序使用流失的预测 |
US11568380B2 (en) * | 2016-03-21 | 2023-01-31 | Mastercard International Incorporated | Systems and methods for use in providing payment transaction notifications |
KR20170109466A (ko) * | 2016-03-21 | 2017-09-29 | 삼성전자주식회사 | 지능형 네트워크 연결 관리를 제공하는 방법 및 장치 |
KR20180006087A (ko) * | 2016-07-08 | 2018-01-17 | 삼성전자주식회사 | 사용자의 의도에 기반한 홍채 인식 방법 및 이를 구현한 전자 장치 |
US10938837B2 (en) | 2016-08-30 | 2021-03-02 | Nicira, Inc. | Isolated network stack to manage security for virtual machines |
US10609160B2 (en) | 2016-12-06 | 2020-03-31 | Nicira, Inc. | Performing context-rich attribute-based services on a host |
US10812451B2 (en) | 2016-12-22 | 2020-10-20 | Nicira, Inc. | Performing appID based firewall services on a host |
US10805332B2 (en) | 2017-07-25 | 2020-10-13 | Nicira, Inc. | Context engine model |
US10581960B2 (en) | 2016-12-22 | 2020-03-03 | Nicira, Inc. | Performing context-rich attribute-based load balancing on a host |
US10803173B2 (en) | 2016-12-22 | 2020-10-13 | Nicira, Inc. | Performing context-rich attribute-based process control services on a host |
US10802858B2 (en) | 2016-12-22 | 2020-10-13 | Nicira, Inc. | Collecting and processing contextual attributes on a host |
US11032246B2 (en) | 2016-12-22 | 2021-06-08 | Nicira, Inc. | Context based firewall services for data message flows for multiple concurrent users on one machine |
US11438390B2 (en) * | 2016-12-30 | 2022-09-06 | Motorola Mobility Llc | Automatic call forwarding during system updates |
US10230820B2 (en) * | 2017-04-12 | 2019-03-12 | Wyse Technology L.L.C. | Analytics driven update notification |
WO2018217801A1 (en) * | 2017-05-24 | 2018-11-29 | Sigma Designs, Inc. | Cross-layer sleep control in a wireless device |
US10733575B2 (en) * | 2017-06-06 | 2020-08-04 | Cisco Technology, Inc. | Automatic generation of reservations for a meeting-space for disturbing noise creators |
CN107624211B (zh) * | 2017-06-09 | 2021-04-20 | 上海爱充科技(集团)有限公司 | 充电方法及装置 |
WO2018234967A1 (en) | 2017-06-19 | 2018-12-27 | Tensera Networks Ltd. | SILENT CONTENT UPDATE IN USER DEVICES |
US10917402B2 (en) * | 2017-06-29 | 2021-02-09 | Motorola Mobility Llc | Sending verification password responsive to mobile device proximity |
US10497369B2 (en) | 2017-08-23 | 2019-12-03 | Qualcomm Incorporated | Method and system for power savings in voice control of a computing device |
US10958747B2 (en) * | 2017-08-24 | 2021-03-23 | Google Llc | Digital component transmission |
US10542072B1 (en) * | 2017-10-04 | 2020-01-21 | Parallels International Gmbh | Utilities toolbox for remote session and client architecture |
CN107846725B (zh) * | 2017-10-27 | 2021-01-15 | 努比亚技术有限公司 | 一种通知消息的处理方法、终端及存储介质 |
CN109766138A (zh) | 2017-11-08 | 2019-05-17 | 广东欧珀移动通信有限公司 | 应用程序预测模型建立、预加载方法、装置、介质及终端 |
US10778651B2 (en) | 2017-11-15 | 2020-09-15 | Nicira, Inc. | Performing context-rich attribute-based encryption on a host |
US10802893B2 (en) * | 2018-01-26 | 2020-10-13 | Nicira, Inc. | Performing process control services on endpoint machines |
US10862773B2 (en) | 2018-01-26 | 2020-12-08 | Nicira, Inc. | Performing services on data messages associated with endpoint machines |
US10782951B2 (en) | 2018-02-23 | 2020-09-22 | Digital Turbine, Inc. | Instant installation of apps |
US10873646B1 (en) * | 2018-03-22 | 2020-12-22 | Facebook, Inc. | Systems and methods for providing content |
CN109471708B (zh) * | 2018-10-12 | 2023-10-31 | 北京奇虎科技有限公司 | 一种任务处理方法、装置及系统 |
JP7226733B2 (ja) * | 2018-12-21 | 2023-02-21 | アツミ電氣株式会社 | 警備センタ及び警備センタの制御方法 |
DE102020101282A1 (de) | 2019-04-12 | 2020-10-15 | Samsung Electronics Co., Ltd. | Verfahren und Vorrichtung für ein Wärmemanagement in einer drahtlosen Kommunikation |
CN112799863A (zh) * | 2019-11-13 | 2021-05-14 | 北京百度网讯科技有限公司 | 用于输出信息的方法和装置 |
US11539718B2 (en) | 2020-01-10 | 2022-12-27 | Vmware, Inc. | Efficiently performing intrusion detection |
US11108728B1 (en) | 2020-07-24 | 2021-08-31 | Vmware, Inc. | Fast distribution of port identifiers for rule processing |
CN114553814B (zh) * | 2020-10-27 | 2024-02-09 | 花瓣云科技有限公司 | 处理推送消息的方法和装置 |
US11930441B2 (en) | 2021-06-14 | 2024-03-12 | Capital One Services, Llc | Event-based modification of personal device settings |
US11641422B2 (en) | 2021-06-14 | 2023-05-02 | Capital One Services, Llc | Systems and methods for integrated third-party callbacks |
WO2022266129A1 (en) * | 2021-06-17 | 2022-12-22 | Microsoft Technology Licensing, Llc | Machine learning assisted automation of workflows based on observation of user interaction with operating system platform features |
CN114115673B (zh) * | 2021-11-25 | 2023-10-27 | 海信集团控股股份有限公司 | 车载屏幕的控制方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0124629D0 (en) * | 2001-10-13 | 2001-12-05 | Hewlett Packard Co | Automatic file sharing in Gnutella networks |
WO2007091256A2 (en) * | 2006-02-06 | 2007-08-16 | Tournamino Ltd. | Multi-stage future events outcome prediction game |
WO2010060480A1 (en) * | 2008-11-26 | 2010-06-03 | Telecom Italia S.P.A. | Application data flow management in an ip network |
CA2818904A1 (en) * | 2010-12-22 | 2012-06-28 | Trueposition, Inc. | Unauthorized location detection and countermeasures |
Family Cites Families (162)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6250548B1 (en) * | 1997-10-16 | 2001-06-26 | Mcclure Neil | Electronic voting system |
US6791580B1 (en) | 1998-12-18 | 2004-09-14 | Tangis Corporation | Supplying notifications related to supply and consumption of user context data |
US6970925B1 (en) | 1999-02-03 | 2005-11-29 | William H. Gates, III | Method and system for property notification |
US6859829B1 (en) | 1999-02-23 | 2005-02-22 | Microsoft Corp. | Method and mechanism for providing computer programs with computer system events |
US6993556B1 (en) | 1999-04-07 | 2006-01-31 | Sentillion, Inc. | Context administrator |
US6871214B2 (en) | 2000-10-30 | 2005-03-22 | Nortel Networks Limited | Generating and providing alert messages in a communications network |
US7065575B1 (en) | 2000-11-20 | 2006-06-20 | Hewlett-Packard Development Company, L.P. | Cooperative networking method and system |
US20030182394A1 (en) | 2001-06-07 | 2003-09-25 | Oren Ryngler | Method and system for providing context awareness |
US6703930B2 (en) | 2001-10-05 | 2004-03-09 | Hewlett-Packard Development Company, L.P. | Personal alerting apparatus and methods |
US6996441B1 (en) | 2002-03-11 | 2006-02-07 | Advanced Micro Devices, Inc. | Forward-looking fan control using system operation information |
US20030200264A1 (en) | 2002-04-18 | 2003-10-23 | Brill Gregory M. | Wireless email protocol system and method of using the same |
KR100440583B1 (ko) | 2002-05-16 | 2004-07-19 | 한국전자통신연구원 | 외부 인터넷에 의한 댁내망의 UPnP장치 관리제어 장치및 방법 |
US7698276B2 (en) | 2002-06-26 | 2010-04-13 | Microsoft Corporation | Framework for providing a subscription based notification system |
US20040002958A1 (en) | 2002-06-26 | 2004-01-01 | Praveen Seshadri | System and method for providing notification(s) |
CN100468319C (zh) | 2002-06-27 | 2009-03-11 | 张丁懋 | 省电移动感知装置和方法 |
KR100976288B1 (ko) * | 2002-06-28 | 2010-08-16 | 콸콤 인코포레이티드 | 임계 이벤트들을 통해 애플리케이션을 관리하는 시스템 및방법 |
US7386855B2 (en) | 2002-08-12 | 2008-06-10 | Ntt Docomo, Inc. | Application mobility service |
CN1230737C (zh) | 2002-09-23 | 2005-12-07 | 华为技术有限公司 | 一种设备数据轮询调度方法 |
US9092286B2 (en) | 2002-12-20 | 2015-07-28 | Qualcomm Incorporated | System to automatically process components on a device |
US20040128663A1 (en) | 2002-12-31 | 2004-07-01 | Efraim Rotem | Method and apparatus for thermally managed resource allocation |
US7529823B2 (en) | 2003-03-27 | 2009-05-05 | Microsoft Corporation | Notifications for shared resources |
US7660845B2 (en) | 2003-08-01 | 2010-02-09 | Sentillion, Inc. | Methods and apparatus for verifying context participants in a context management system in a networked environment |
US20070067373A1 (en) | 2003-11-03 | 2007-03-22 | Steven Higgins | Methods and apparatuses to provide mobile applications |
US7784069B2 (en) * | 2003-12-01 | 2010-08-24 | International Business Machines Corporation | Selecting divergent storylines using branching techniques |
US20050125701A1 (en) | 2003-12-03 | 2005-06-09 | International Business Machines Corporation | Method and system for energy management via energy-aware process scheduling |
US7716158B2 (en) | 2004-01-09 | 2010-05-11 | Microsoft Corporation | System and method for context sensitive searching |
JP4521206B2 (ja) | 2004-03-01 | 2010-08-11 | 株式会社日立製作所 | ネットワークストレージシステム、コマンドコントローラ、及びネットワークストレージシステムにおけるコマンド制御方法 |
BRPI0510375A (pt) * | 2004-04-28 | 2007-11-06 | Electrolux Home Prod Inc | comunicação de aparelho sem fio com algoritmo de detecção e de captura |
US7546956B2 (en) | 2004-04-30 | 2009-06-16 | Research In Motion Limited | System and method of operation control on an electronic device |
US8898256B2 (en) | 2004-07-13 | 2014-11-25 | International Business Machines Corporation | Prioritization of application component distribution |
US20060242694A1 (en) * | 2004-11-08 | 2006-10-26 | Jeffrey Gold | Mitigation and mitigation management of attacks in networked systems |
US20060168014A1 (en) | 2004-11-30 | 2006-07-27 | Nokia Inc. | Highly extendable message filtering daemon for a network appliance |
TWI272527B (en) | 2004-12-10 | 2007-02-01 | Inventec Corp | System and method synchronously updating data and application programs |
US7752253B2 (en) * | 2005-04-25 | 2010-07-06 | Microsoft Corporation | Collaborative invitation system and method |
US7610266B2 (en) | 2005-05-25 | 2009-10-27 | International Business Machines Corporation | Method for vertical integrated performance and environment monitoring |
US8732234B2 (en) | 2005-06-07 | 2014-05-20 | Yahoo! Inc. | Providing relevant non-requested content to a mobile device |
US20070022380A1 (en) * | 2005-07-20 | 2007-01-25 | Microsoft Corporation | Context aware task page |
US7562234B2 (en) | 2005-08-25 | 2009-07-14 | Apple Inc. | Methods and apparatuses for dynamic power control |
US7298714B2 (en) * | 2005-10-04 | 2007-11-20 | Yahoo! Inc. | Peer-to-peer message chaining for initiating a data exchange with a server |
GB0520576D0 (en) | 2005-10-10 | 2005-11-16 | Applied Generics Ltd | Using traffic monitoring information to provide better driver route planning |
US8838620B2 (en) | 2006-02-03 | 2014-09-16 | International Business Machines Corporation | Predictive data object retrieval |
GB0607294D0 (en) | 2006-04-11 | 2006-05-24 | Nokia Corp | A node |
US8126993B2 (en) | 2006-07-18 | 2012-02-28 | Nvidia Corporation | System, method, and computer program product for communicating sub-device state information |
TWI333170B (en) | 2006-11-09 | 2010-11-11 | Inst Information Industry | Complex event evaluation systems and methods, and machine readable medium thereof |
JP4544246B2 (ja) | 2006-12-28 | 2010-09-15 | ソニー株式会社 | 制御装置および方法、プログラム、並びに記録媒体 |
US8028060B1 (en) | 2007-01-05 | 2011-09-27 | Apple Inc. | Background task execution over a network based on network activity idle time |
US8032472B2 (en) | 2007-04-04 | 2011-10-04 | Tuen Solutions Limited Liability Company | Intelligent agent for distributed services for mobile devices |
KR100861329B1 (ko) | 2007-04-06 | 2008-10-01 | 한국과학기술원 | 상황 모니터링을 지원하는 상황 모니터링 장치 및 상황 모니터링 방법 |
US20080310485A1 (en) * | 2007-06-15 | 2008-12-18 | Qualcomm Incorporated | System and methods for controlling modem hardware |
US20090165132A1 (en) | 2007-12-21 | 2009-06-25 | Fiberlink Communications Corporation | System and method for security agent monitoring and protection |
US7949888B2 (en) | 2008-01-07 | 2011-05-24 | Apple Inc. | Forced idle of a data processing system |
US8402552B2 (en) | 2008-01-07 | 2013-03-19 | Antenna Vaultus, Inc. | System and method for securely accessing mobile data |
US8170547B1 (en) | 2008-01-17 | 2012-05-01 | Sprint Communications Company L.P. | Dynamic adjustment of a base transceiver station in a wireless communication system |
US8386822B2 (en) | 2008-02-01 | 2013-02-26 | International Business Machines Corporation | Wake-and-go mechanism with data monitoring |
US8589955B2 (en) | 2008-02-12 | 2013-11-19 | Nuance Communications, Inc. | System and method for building applications, such as customized applications for mobile devices |
US7911509B2 (en) | 2008-03-12 | 2011-03-22 | Sony Ericsson Mobile Communications Ab | Adaptive video encode scaling |
TWI375906B (en) | 2008-04-21 | 2012-11-01 | Htc Corp | Method and system and device and storage medium and operating system and application program for displaying information |
US20090282130A1 (en) | 2008-05-12 | 2009-11-12 | Nokia Corporation | Resource sharing via close-proximity wireless communication |
US8032317B2 (en) | 2008-05-15 | 2011-10-04 | The Nielsen Company (Us), Llc | System and methods for metering and analyzing energy consumption of events within a portable device |
US8996332B2 (en) | 2008-06-24 | 2015-03-31 | Dp Technologies, Inc. | Program setting adjustments based on activity identification |
WO2009155989A1 (en) * | 2008-06-27 | 2009-12-30 | Alcatel Lucent | Capability grabbing peer device fuctionality in sip |
US8327349B2 (en) | 2008-07-11 | 2012-12-04 | Internationanl Business Machines Corporation | Matching plug-ins to users |
US20100015926A1 (en) | 2008-07-18 | 2010-01-21 | Luff Robert A | System and methods to monitor and analyze events on wireless devices to predict wireless network resource usage |
US20100235306A1 (en) | 2008-08-11 | 2010-09-16 | Seth Wagoner | Adaptive timelog system |
US8321057B2 (en) | 2009-03-12 | 2012-11-27 | Red Hat, Inc. | Infrastructure for adaptive environmental control for equipment in a bounded area |
JP4966327B2 (ja) | 2009-03-17 | 2012-07-04 | 株式会社東芝 | 情報処理装置及び省電力設定方法 |
US9141918B2 (en) | 2009-03-18 | 2015-09-22 | Location Labs, Inc. | User contribution based mapping system and method |
BRPI1013002A2 (pt) | 2009-05-21 | 2016-03-29 | Intertrust Tech Corp | sistemas e métodos para entrega de conteúdo |
US20120042002A1 (en) | 2009-06-03 | 2012-02-16 | Tony Paul Smith | System and method for context driven centralized help |
WO2010151658A1 (en) * | 2009-06-24 | 2010-12-29 | Ryan Margaret E | A system and method for elections and government accountability |
US8190939B2 (en) | 2009-06-26 | 2012-05-29 | Microsoft Corporation | Reducing power consumption of computing devices by forecasting computing performance needs |
CN101959133A (zh) * | 2009-07-15 | 2011-01-26 | 华为技术有限公司 | M2m用户设备的操作控制方法、系统和m2m用户设备 |
TWI389032B (zh) | 2009-07-17 | 2013-03-11 | Inventec Appliances Corp | 可攜式通訊裝置及其韌體更新方法及系統 |
US8732728B2 (en) | 2009-07-20 | 2014-05-20 | Samsung Electronics Co., Ltd. | System and method to allow multiple plug-in applications real-time access to a camera application in a mobile device |
US8521809B2 (en) | 2009-07-31 | 2013-08-27 | Z2Live, Inc. | Mobile device notification controls system and method |
US8090351B2 (en) * | 2009-09-01 | 2012-01-03 | Elliot Klein | Geographical location authentication method |
US20110060996A1 (en) | 2009-09-10 | 2011-03-10 | Alberth Jr William P | Method and System for Reducing Notifications to a Mobile Device in Accordance with User Preferences |
US8145199B2 (en) | 2009-10-31 | 2012-03-27 | BT Patent LLC | Controlling mobile device functions |
EP2328324A1 (en) | 2009-11-27 | 2011-06-01 | France Telecom | Selective routing method, network and home agent |
US20120154633A1 (en) | 2009-12-04 | 2012-06-21 | Rodriguez Tony F | Linked Data Methods and Systems |
US8510569B2 (en) | 2009-12-16 | 2013-08-13 | Intel Corporation | Providing integrity verification and attestation in a hidden execution environment |
US20110177774A1 (en) * | 2010-01-13 | 2011-07-21 | Qualcomm Incorporated | Dynamic generation, delivery, and execution of interactive applications over a mobile broadcast network |
JP5900329B2 (ja) | 2010-05-07 | 2016-04-06 | 日本電気株式会社 | 情報処理装置、端末、サーバ及びデータ転送方法 |
US8305728B2 (en) | 2010-06-30 | 2012-11-06 | Apple Inc. | Methods and apparatus for cooling electronic devices |
GB2495455B (en) | 2010-07-26 | 2013-11-13 | Seven Networks Inc | Prediction of activity session for mobile network use optimization and user experience enhancement |
US8578388B2 (en) | 2010-10-25 | 2013-11-05 | International Business Machines Corporation | Optimizing the performance of hybrid CPU systems based upon the thread type of applications to be run on the CPUs |
US8231057B1 (en) | 2010-12-14 | 2012-07-31 | United Services Automobile Association | 2D barcode on checks to decrease non-conforming image percentages |
US20120179502A1 (en) | 2011-01-11 | 2012-07-12 | Smart Technologies Ulc | Method for coordinating resources for events and system employing same |
US8510154B2 (en) * | 2011-01-27 | 2013-08-13 | Leroy Robinson | Method and system for searching for, and monitoring assessment of, original content creators and the original content thereof |
US10631246B2 (en) | 2011-02-14 | 2020-04-21 | Microsoft Technology Licensing, Llc | Task switching on mobile devices |
US9485640B2 (en) | 2011-03-28 | 2016-11-01 | Google Inc. | Smart cache warming |
US9477734B2 (en) | 2011-05-10 | 2016-10-25 | Microsoft Technology Licensing, Llc | Data synch notification using a notification gateway |
US8874026B2 (en) | 2011-05-24 | 2014-10-28 | Listener Driven Radio Llc | System for providing audience interaction with radio programming |
US20120316774A1 (en) | 2011-06-09 | 2012-12-13 | Microsoft Corporation | Automatic navigation to a prior known location |
GB201113921D0 (en) | 2011-08-12 | 2011-09-28 | Overlay Media Ltd | Context-awareness statistics on mobile devices |
US8788881B2 (en) | 2011-08-17 | 2014-07-22 | Lookout, Inc. | System and method for mobile device push communications |
US8904216B2 (en) | 2011-09-02 | 2014-12-02 | Iota Computing, Inc. | Massively multicore processor and operating system to manage strands in hardware |
EP2568384A1 (en) | 2011-09-06 | 2013-03-13 | Alcatel Lucent | Method, controller device and computer program for measuring energy efficiency of a multi blades system |
US20130067492A1 (en) | 2011-09-09 | 2013-03-14 | Eli Joshua FIDLER | Content-filter publish-subscribe system that optimizes interprocess communications |
WO2013048986A1 (en) | 2011-09-26 | 2013-04-04 | Knoa Software, Inc. | Method, system and program product for allocation and/or prioritization of electronic resources |
US8634810B2 (en) | 2011-09-29 | 2014-01-21 | International Business Machines Corporation | Pushing secure notifications to mobile computing devices |
US8763077B2 (en) * | 2011-10-07 | 2014-06-24 | Duo Security, Inc. | System and method for enforcing a policy for an authenticator device |
US8874781B2 (en) | 2011-10-17 | 2014-10-28 | Qualcomm Incorporated | System and apparatus for power efficient delivery of social network updates to a receiver device in a broadcast network |
US8881164B2 (en) | 2011-10-18 | 2014-11-04 | Hewlett-Packard Development Company, L.P. | Computer process with utilization reduction |
US8718628B2 (en) | 2011-10-24 | 2014-05-06 | Verizon Patent And Licensing Inc. | Intelligent call identification |
US20130110943A1 (en) | 2011-11-02 | 2013-05-02 | Apple Inc. | Notification and reminder generation, distribution, and storage system |
US8861354B2 (en) | 2011-12-14 | 2014-10-14 | Seven Networks, Inc. | Hierarchies and categories for management and deployment of policies for distributed wireless traffic optimization |
US9304570B2 (en) | 2011-12-15 | 2016-04-05 | Intel Corporation | Method, apparatus, and system for energy efficiency and energy conservation including power and performance workload-based balancing between multiple processing elements |
US20130303195A1 (en) | 2011-12-23 | 2013-11-14 | Elwha Llc | Computational Systems and Methods for Locating a Mobile Device |
KR20130089907A (ko) | 2012-01-11 | 2013-08-13 | 삼성전자주식회사 | 사용자 상황에 따라 광고를 제공하는 이동 단말 및 방법 |
US8897782B2 (en) | 2012-01-16 | 2014-11-25 | Microsoft Corporation | System and method for offloading traffic from cellular networks using plugins |
US8943204B2 (en) * | 2012-01-23 | 2015-01-27 | Cellco Partnership | Method and system for conserving network resources when sending information to mobile devices |
US9172608B2 (en) | 2012-02-07 | 2015-10-27 | Cloudera, Inc. | Centralized configuration and monitoring of a distributed computing cluster |
US9183497B2 (en) | 2012-02-23 | 2015-11-10 | Palo Alto Research Center Incorporated | Performance-efficient system for predicting user activities based on time-related features |
US9274805B2 (en) | 2012-02-24 | 2016-03-01 | Qualcomm Incorporated | System and method for thermally aware device booting |
US9467723B2 (en) * | 2012-04-04 | 2016-10-11 | Time Warner Cable Enterprises Llc | Apparatus and methods for automated highlight reel creation in a content delivery network |
WO2013149596A1 (zh) | 2012-04-05 | 2013-10-10 | Zhang Guobiao | 基于位置的预取和基于参与者的预取 |
US9098357B2 (en) | 2012-04-11 | 2015-08-04 | Nokia Technologies Oy | Method and apparatus for activity management across multiple devices |
JP6019778B2 (ja) | 2012-06-07 | 2016-11-02 | 富士通株式会社 | 運用監視装置、運用監視装置における原因事象の判定方法、及び情報通信ネットワークシステム |
US20130332524A1 (en) | 2012-06-12 | 2013-12-12 | Intermec Ip Corp. | Data service on a mobile device |
US8775631B2 (en) | 2012-07-13 | 2014-07-08 | Seven Networks, Inc. | Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications |
CN103581837B (zh) | 2012-08-08 | 2019-05-14 | 成都鼎桥通信技术有限公司 | 资源配置方法、资源删除方法及设备 |
CN102866921B (zh) | 2012-08-29 | 2016-05-11 | 惠州Tcl移动通信有限公司 | 一种多核cpu的调控方法及系统 |
US8984240B2 (en) | 2012-08-30 | 2015-03-17 | International Business Machines Corporation | Reducing page faults in host OS following a live partition mobility event |
US9092445B2 (en) | 2012-09-06 | 2015-07-28 | Advanced Micro Devices, Inc. | Predictive information topology modeling and visualization |
US8515499B1 (en) | 2012-09-10 | 2013-08-20 | Google Inc. | Estimating remaining use time of mobile computing devices |
US10042603B2 (en) | 2012-09-20 | 2018-08-07 | Samsung Electronics Co., Ltd. | Context aware service provision method and apparatus of user device |
US20140082383A1 (en) | 2012-09-20 | 2014-03-20 | Apple Inc. | Predicting user intent and future interaction from application activities |
WO2014049443A2 (en) * | 2012-09-27 | 2014-04-03 | Aegis Mobility, Inc. | Efficient detection of movement using satellite positioning systems |
US9442778B2 (en) * | 2012-10-01 | 2016-09-13 | Salesforce.Com, Inc. | Method and system for secured inter-application communication in mobile devices |
US8887182B2 (en) | 2012-10-16 | 2014-11-11 | Yahoo! Inc. | Hybrid applications |
US9219668B2 (en) | 2012-10-19 | 2015-12-22 | Facebook, Inc. | Predicting the future state of a mobile device user |
US9158560B2 (en) | 2012-10-26 | 2015-10-13 | Verizon Patent And Licensing Inc. | Dynamic application arranger |
US9431839B2 (en) | 2012-10-26 | 2016-08-30 | Nokia Technologies Oy | Method, apparatus, and computer program product for optimized device-to-device charging |
WO2014074513A1 (en) | 2012-11-06 | 2014-05-15 | Intertrust Technologies Corporation | Activity recognition systems and methods |
US9250958B2 (en) | 2012-11-19 | 2016-02-02 | Qualcomm Innovation Center, Inc. | System, method, and apparatus for improving application-launch latencies |
US9832623B2 (en) | 2012-12-05 | 2017-11-28 | T-Mobile Usa, Inc. | Energy-efficient push/poll notification service |
WO2014093146A1 (en) * | 2012-12-12 | 2014-06-19 | Milton Theo | Online voting systems and methods |
US9426120B1 (en) | 2012-12-21 | 2016-08-23 | Mobile Iron, Inc. | Location and time based mobile app policies |
US9038134B1 (en) | 2012-12-31 | 2015-05-19 | Emc Corporation | Managing predictions in data security systems |
US9049168B2 (en) | 2013-01-11 | 2015-06-02 | State Farm Mutual Automobile Insurance Company | Home sensor data gathering for neighbor notification purposes |
US9295413B2 (en) | 2013-01-17 | 2016-03-29 | Garmin Switzerland Gmbh | Fitness monitor |
US9293138B2 (en) | 2013-05-14 | 2016-03-22 | Amazon Technologies, Inc. | Storing state information from network-based user devices |
US10223156B2 (en) | 2013-06-09 | 2019-03-05 | Apple Inc. | Initiating background updates based on user activity |
US9603094B2 (en) | 2013-06-09 | 2017-03-21 | Apple Inc. | Non-waking push notifications |
US9392393B2 (en) | 2013-06-09 | 2016-07-12 | Apple Inc. | Push notification initiated background updates |
US9256484B2 (en) | 2013-06-09 | 2016-02-09 | Apple Inc. | Dynamic adjustment of mobile device based on user activity |
JP5422086B1 (ja) | 2013-07-12 | 2014-02-19 | 三菱電機株式会社 | 回路遮断器 |
CN104348855B (zh) | 2013-07-29 | 2018-04-27 | 华为技术有限公司 | 用户信息的处理方法、移动终端及服务器 |
US9170119B2 (en) | 2013-09-24 | 2015-10-27 | Mitsubishi Electric Research Laboratories, Inc. | Method and system for dynamically adapting user interfaces in vehicle navigation systems to minimize interaction complexity |
US9377839B2 (en) * | 2013-12-02 | 2016-06-28 | Verizon Patent And Licensing Inc. | Dynamic battery management |
US9218468B1 (en) | 2013-12-16 | 2015-12-22 | Matthew B. Rappaport | Systems and methods for verifying attributes of users of online systems |
US9603003B2 (en) * | 2014-03-05 | 2017-03-21 | Google Technology Holdings LLC | Methods and apparatus for radio network scanning using geo-tagged information from wireless client devices of heterogeneous wide area networks |
US9509827B2 (en) * | 2014-03-12 | 2016-11-29 | Intel IP Corporation | Apparatus, system and method of managing at a mobile device execution of an application by a computing device |
US10110677B2 (en) | 2014-05-06 | 2018-10-23 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Context-aware decision making |
US9158604B1 (en) * | 2014-05-13 | 2015-10-13 | Qualcomm Incorporated | Lightweight data-flow tracker for realtime behavioral analysis using control flow |
US9432796B2 (en) | 2014-05-30 | 2016-08-30 | Apple Inc. | Dynamic adjustment of mobile device based on peer event data |
US9432839B2 (en) | 2014-05-30 | 2016-08-30 | Apple Inc. | Dynamic adjustment of mobile device based on thermal conditions |
US9572104B2 (en) | 2015-02-25 | 2017-02-14 | Microsoft Technology Licensing, Llc | Dynamic adjustment of user experience based on system capabilities |
WO2016196497A1 (en) | 2015-06-05 | 2016-12-08 | Apple Inc. | Prediction and notification of changes in the operating context of a computing device |
US10015178B2 (en) | 2015-07-28 | 2018-07-03 | Sap Se | Real-time contextual monitoring intrusion detection and prevention |
US9979591B2 (en) | 2015-08-28 | 2018-05-22 | Samsung Electronics Co., Ltd. | Event notifications for applications |
-
2014
- 2014-09-30 US US14/503,257 patent/US9432796B2/en active Active
-
2015
- 2015-05-07 KR KR1020187021111A patent/KR101996263B1/ko active IP Right Grant
- 2015-05-07 KR KR1020187021116A patent/KR101993569B1/ko active IP Right Grant
- 2015-05-07 CN CN202010103608.2A patent/CN111176698B/zh active Active
- 2015-05-07 KR KR1020167036445A patent/KR101882469B1/ko active IP Right Grant
- 2015-05-07 WO PCT/US2015/029774 patent/WO2015183515A1/en active Application Filing
- 2015-05-07 KR KR1020187021115A patent/KR101993568B1/ko active IP Right Grant
- 2015-05-07 CN CN201580027844.8A patent/CN106462453B/zh active Active
- 2015-05-07 KR KR1020197018622A patent/KR102106744B1/ko active IP Right Grant
-
2016
- 2016-08-22 US US15/243,811 patent/US10178200B2/en active Active
-
2018
- 2018-12-07 US US16/213,887 patent/US10554786B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0124629D0 (en) * | 2001-10-13 | 2001-12-05 | Hewlett Packard Co | Automatic file sharing in Gnutella networks |
WO2007091256A2 (en) * | 2006-02-06 | 2007-08-16 | Tournamino Ltd. | Multi-stage future events outcome prediction game |
WO2010060480A1 (en) * | 2008-11-26 | 2010-06-03 | Telecom Italia S.P.A. | Application data flow management in an ip network |
CA2818904A1 (en) * | 2010-12-22 | 2012-06-28 | Trueposition, Inc. | Unauthorized location detection and countermeasures |
Non-Patent Citations (1)
Title |
---|
对等网络信任模型及激励机制研究;苏永乐;《中国优秀硕士学位论文全文数据库 信息科技辑》(第05期);I139-217 * |
Also Published As
Publication number | Publication date |
---|---|
KR101993568B1 (ko) | 2019-06-26 |
US20150350807A1 (en) | 2015-12-03 |
KR20190080969A (ko) | 2019-07-08 |
KR20180086515A (ko) | 2018-07-31 |
US9432796B2 (en) | 2016-08-30 |
KR20180086517A (ko) | 2018-07-31 |
KR101993569B1 (ko) | 2019-06-26 |
US20190109927A1 (en) | 2019-04-11 |
US20170078445A1 (en) | 2017-03-16 |
US10178200B2 (en) | 2019-01-08 |
CN106462453B (zh) | 2020-02-21 |
CN106462453A (zh) | 2017-02-22 |
US10554786B2 (en) | 2020-02-04 |
KR101882469B1 (ko) | 2018-07-27 |
KR20170012427A (ko) | 2017-02-02 |
KR102106744B1 (ko) | 2020-05-04 |
KR20180086516A (ko) | 2018-07-31 |
KR101996263B1 (ko) | 2019-07-04 |
WO2015183515A1 (en) | 2015-12-03 |
CN111176698A (zh) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111176698B (zh) | 基于对等事件数据来对移动设备进行动态调整 | |
US9462965B2 (en) | Dynamic adjustment of mobile device based on system events | |
US9432839B2 (en) | Dynamic adjustment of mobile device based on thermal conditions | |
US10936358B2 (en) | Initiating background updates based on user activity | |
US9465679B2 (en) | Dynamic adjustment of mobile device based on adaptive prediction of system events | |
US9603094B2 (en) | Non-waking push notifications | |
US9256484B2 (en) | Dynamic adjustment of mobile device based on user activity | |
US9813990B2 (en) | Dynamic adjustment of mobile device based on voter feedback | |
US9392393B2 (en) | Push notification initiated background updates |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |