CN109324879B - 管理触发器的方法及终端设备 - Google Patents
管理触发器的方法及终端设备 Download PDFInfo
- Publication number
- CN109324879B CN109324879B CN201710630643.8A CN201710630643A CN109324879B CN 109324879 B CN109324879 B CN 109324879B CN 201710630643 A CN201710630643 A CN 201710630643A CN 109324879 B CN109324879 B CN 109324879B
- Authority
- CN
- China
- Prior art keywords
- trigger
- application program
- triggering
- terminal device
- time
- 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
Images
Classifications
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- 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
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- 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
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/482—Application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Telephone Function (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请实施例提供一种终端设备上管理触发器的方法及终端设备,触发管理器响应于应用程序设置触发器的操作,根据用户使用习惯,触发器本身的特征信息,以及应用程序的特征信息确定该触发器的触发策略,触发策略包括:加速触发、正常触发或延缓触发,对不同特点的触发器执行差异化的触发策略,以动态改变触发器触发预定任务的时机,从而抑制应用保活目的或者其它用于触发不符合用户真实意愿的任务的恶意触发器,减少资源消耗,也可以加速对系统或用户有益的触发器的触发,提升用户体验。
Description
技术领域
本申请涉及终端领域,更为具体地,涉及一种在终端设备上管理触发器的方法和终端设备。
背景技术
终端设备通常会根据应用程序的需求,感知时间的变化和流动,以触发相应的任务。例如,终端设备可能通过闹钟(alarm)、任务信息(JobInfo)对象、计时器(timer)等触发器(trigger),在指定的时间触发相应的任务。设置触发器来定时触发任务的原因可能有多种,有些用户的实际需求,有些则是是应用程序自行设置的。
善意的触发器可以提升用户体验,例如用户在闹钟中进行操作,设置明天早上7:00闹钟响铃叫醒自己上班。或者,用户在购物应用程序中设置了抢购某项商品,该购物应用程序进而设置了对应时间的提醒闹钟。又或者,系统或常用的应用程序需要完成某项特定的任务,如新闻阅读类应用程序可以设置每小时一次的JobInfo对象,获取网上新闻进行缓存,减少用户等待时间。
然而,从应用程序的角度,可能出于保证用户日活跃量指标、保证广告收入、提升同时在线数、减少冷启动率等目的,应用程序会应用某些特殊机制进行恶意保活,保证应用程序常驻后台,不被系统清理资源。目前最广泛使用的手段是,应用程序在用户不知情的情况下,通过设置触发器来定时或周期性自启动,这样,即使应用程序被用户关闭后,仍然可以在后台被触发器重新拉起。通过测试和分析发现,终端设备上的许多常用应用程序,都会借助操作系统的触发器,例如alarm、JobInfo对象等,定时启动或者周期性自启动,从而达到保活的目的。这种以应用程序保活为目的而设置的触发器,不符合用户的真实意愿或意图,通常也是用户感知不到的,因此也可以被称为恶意触发器。恶意触发器会导致用户已经关闭的应用程序在后台被系统反复拉起,这样会带来额外的资源开销(CPU、内存、电池等),导致前台性能下降以及功耗的升高。另外,当终端设备处于休眠状态时,应用程序设置的恶意触发器也会导致系统从休眠状态反复被唤醒,从而产生了额外的功耗,影响终端设备的续航。
发明内容
本申请提供一种管理触发器的方法及相关装置,基于一个或多个维度的信息对终端设备上的触发器进行差异化管控,进而改变应用程序基于触发器执行对应任务的时机,抑制应用程序通过设置触发器来频繁触发任务的行为,减少资源消耗。
第一方面,本申请实施例提供一种管理触发器(trigger)的方法,包括:获取终端设备上的应用程序设置的触发器,该触发器被设置为用于在设定的触发时间触发预定任务;根据用户历史行为特征信息、所述应用程序的特征信息以及所述触发器的特征信息中的至少一项,确定所述触发器的属性,并根据所述触发器的属性延迟或阻塞所述触发器,使得所述预定任务被触发的时间晚于所述应用程序设置的触发时间;其中,用户历史行为特征信息用于确定用户的使用习惯。在该方案中,通过用户的使用习惯、应用程序的特征以及触发器的特征,识别出不符合用户意愿或用户使用习惯的触发器的特定属性的触发器,比如用于应用保活(周期性启动某个进程或服务)的恶意触发器,进而对该触发器进行延迟或阻塞操作,从而减少对前台可用资源影响,降低功耗。
其中,触发器为闹钟(alarm)、定时器(timer)或任务信息(JobInfo)对象中的一种。
在一种可能的设计中,当根据用户历史行为特征信息、所述应用程序的特征信息以及所述触发器的特征信息中的至少一项,确定该触发器是用于触发用户指定或者对用户体验有益的任务的特定属性的触发器,则对该触发器进行加速处理,以提前或无阻塞触发对应的任务,提升用户体验。
在一种可能的设计中,当该触发器的触发时间到达,在进行该触发器的分发处理之前,进一步根据所述终端设备的状态以及用户当前的操作状态中的至少一项,确定是否满足分发条件,若不满足分发条件,则延迟分发该触发器至所述应用程序,从而可以更好地管控触发器的触发行为,降低对前台性能的影响,提升用户体验。
在一种可能的设计中,可以设置多个不同类型的触发器队列,包括:正常触发器队列、延迟触发器队列和加速触发器队列;相应地,将触发策略为延迟触发的触发器加入延迟触发器队列,将触发策略为正常触发的触发器加入正常触发器队列,将触发策略为加速触发的触发器加入加速触发器队列。通过设置与多种触发策略相对应的多个触发器队列,便于在逻辑上对触发器进行管理,提高系统性能。
在一种可能的设计中,根据触发器的分发时机,触发器可以在不同的触发器队列之间迁移。
第二方面,本申请实施例提供了另一种管理触发器的方法,包括:确定由所述终端设备上的第一应用程序设置的触发器,所述触发器用于在设定的触发条件满足时触发所述第一应用程序执行预定任务;根据用户历史行为特征信息、所述应用程序的特征信息以及所述触发器的特征信息中的至少一项确定所述触发器的触发策略;若所述触发器的触发策略为正常触发,则当所述设定的触发条件满足时,则执行所述触发器,以触发所述应用程序执行所述预定任务;若所述触发器的触发策略为延迟触发,则延迟所述触发器,以延缓触发所述应用程序执行所述预定任务。在该方案中,通过用户的使用习惯、应用程序的特征以及触发器的特征,动态确定应用程序设置的触发器的触发策略,进而对特定属性的触发器,比如恶意触发器进行延迟或阻塞处理,从而减少恶意触发器对前台可用资源影响,降低功耗。
在一种可能的设计中,可以根据用户历史行为特征信息、所述应用程序的特征信息以及所述触发器的特征信息中的至少一项,识别出用于触发用户指定或者对用户体验有益的任务的特定属性的触发器,并对该触发器进行加速处理,以提前或无阻塞触发对应的任务,提升用户体验。
在一种可能的设计中,当触发器的触发条件满足时,进一步根据所述终端设备的状态以及用户当前的操作状态中的至少一项,确定是否满足分发条件,若满足,则分发所述第一触发器至所述第一应用程序;若不满足分发条件,则延迟分发所述触发器至所述应用程序,从而可以更好地管控触发器的触发行为,降低对前台性能的影响,提升用户体验。
在一种可能的设计中,对触发器的延迟和加速处理,可以通过修改该触发器的触发条件来实现。
其中,触发器的触发条件包括时间维度的条件和/或所述终端设备状态维度的条件;所述时间维度的条件包括但不限于:触发所述第一任务的时间,触发所述第一任务的时间间隔,或所述第一任务的最大触发时延中的一种;所述终端设备状态维度的条件包括但不限于:所述终端设备的电量不低于设定的第一阈值,所述终端设备的可用存储空间不低于设定的第二阈值,所述终端设备处于充电状态,所述终端设备处于空闲模式,或所述终端设备的网络连接类型为设定类型中的一种。
在一种可能的设计中,对触发器的延迟处理包括:当所述应用程序设定的触发条件成立时,等待预设时长之后再次判断所述设定的触发条件是否满足,若满足,则执行所述触发器,以触发所述应用程序执行所述预定任务;其中,预设时长可以根据系统的状态或具体的应用场景灵活设置。
在一种可能的设计中,可以设置多个不同类型的触发器队列,包括:正常触发器队列、延迟触发器队列和加速触发器队列;相应地,将触发策略为延迟触发的触发器加入延迟触发器队列,将触发策略为正常触发的触发器加入正常触发器队列,将触发策略为加速触发的触发器加入加速触发器队列。通过设置与多种触发策略相对应的多个触发器队列,便于在逻辑上对触发器进行管理,提高系统性能。
第三方面,本申请实施例提供了另一种管理触发器的方法,包括:确定由所述终端设备上的应用程序设置的触发器,所述触发器用于在设定的触发条件满足时触发所述应用程序执行预定任务;当所述触发器的触发条件满足时,根据所述终端设备的状态和用户当前的操作状态中的至少一项,延迟分发所述触发器至所述应用程序,使得所述第一任务被延迟执行。在该方案中,基于终端设备的状态和/或用户当前的操作状态,灵活管控触发器的分发时机,降低触发器对前台性能的影响,提升用户体验。
其中,触发器的触发条件包括时间维度的条件和/或所述终端设备状态维度的条件;所述时间维度的条件包括但不限于:触发所述第一任务的时间,触发所述第一任务的时间间隔,或所述第一任务的最大触发时延中的一种;所述终端设备状态维度的条件包括但不限于:所述终端设备的电量不低于设定的第一阈值,所述终端设备的可用存储空间不低于设定的第二阈值,所述终端设备处于充电状态,所述终端设备处于空闲模式,或所述终端设备的网络连接类型为设定类型中的一种。
在一种可能的设计中,当所述终端设备的资源占用率超过设定的第一阈值时,延迟分发所述触发器至所述应用程序。
在一种可能的设计中,当所述终端设备处于休眠模式时,延迟分发所述触发器至所述应用程序。
在一种可能的设计中,当所述终端设备的剩余电量低于预定的第二阈值时,延迟分发所述触发器至所述应用程序。
在一种可能的设计中,当用户正在操作的前台应用为高资源消耗应用,即消耗的资源超过预设阈值,比如大型游戏时,延迟分发所述触发器至所述应用程序。
第四方面,本申请实施例提供了另一种管理触发器的方法,包括:获取触发器的参数,所述触发器由终端设备上的应用程序设置用于在设定的触发条件满足时触发执行预定任务;根据所述触发器的参数、用户历史行为特征信息、以及所述应用程序的特征信息中的至少一项确定所述触发器的触发策略;若所述触发器的触发策略为正常触发,则当所述设定的触发条件满足时,则执行所述触发器,以触发所述应用程序执行所述预定任务;若所述触发器的触发策略为延迟触发,则延迟所述触发器,以延缓触发所述应用程序执行所述预定任务。在该方案中,通过用户的使用习惯、应用程序的特征以及触发器的特征,动态确定应用程序设置的触发器的触发策略,进而对特定属性的触发器,比如恶意触发器进行延迟或阻塞处理,从而减少恶意触发器对前台可用资源影响,降低功耗。
其中,触发器的参数包括:触发器的类型、触发条件、待触发的预定任务(scheduledtask)等。
在一种可能的设计中,可以根据所述触发器的参数、用户历史行为特征信息、以及所述应用程序的特征信息中的至少一项,识别出用于触发用户指定或者对用户体验有益的任务的特定属性的触发器,并对该触发器进行加速处理,以提前或无阻塞触发对应的任务,提升用户体验。
在一种可能的设计中,当触发器的触发条件满足时,进一步根据所述终端设备的状态以及用户当前的操作状态中的至少一项,确定是否满足分发条件,若满足,则分发所述第一触发器至所述第一应用程序;若不满足分发条件,则延迟分发所述触发器至所述应用程序,从而可以更好地管控触发器的触发行为,降低对前台性能的影响,提升用户体验。
在一种可能的设计中,对触发器的延迟和加速处理,可以通过修改该触发器的触发条件来实现。
在一种可能的设计中,对触发器的延迟处理包括:当所述应用程序设定的触发条件成立时,等待预设时长之后再次判断所述设定的触发条件是否满足,若满足,则执行所述触发器,以触发所述应用程序执行所述预定任务;其中,预设时长可以根据系统的状态或具体的应用场景灵活设置。
在一种可能的设计中,可以设置多个不同类型的触发器队列,包括:正常触发器队列、延迟触发器队列和加速触发器队列;相应地,将触发策略为延迟触发的触发器加入延迟触发器队列,将触发策略为正常触发的触发器加入正常触发器队列,将触发策略为加速触发的触发器加入加速触发器队列。通过设置与多种触发策略相对应的多个触发器队列,便于在逻辑上对触发器进行管理,提高系统性能。
第五方面,本申请实施例提供一种终端设备,包括用于执行上述第一方面至第三方面中任一方面所描述的方法的一个或多个功能单元,这些功能单元可以由软件实现,或者由硬件,比如处理器实现,或者由软件结合必要的硬件实现。
第六方面,本申请实施例提供一种终端设备,包括存储器、处理器以及存储在所述存储器上的计算机程序,当所述处理器执行所述计算机程序时实现上述第一方面至第四方面中任一方面所描述的方法的步骤。
第七方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序(指令),该程序(指令)被处理器执行时实现上述第一方面至第四方面中任一方面所描述的方法的步骤。
在上述任一方面或任一方面的任一种可能的实现方式中,应用程序的特征信息包括所述应用程序的历史行为特征信息、标识和类型中的至少一种;所述用户历史行为特征信息包括用户操作记录和/或用户设置的黑名单,所述黑名单记录有用户设置的可信任应用程序的标识。
在上述任一方面或任一方面的任一种可能的实现方式中,所述终端设备的状态包括所述终端设备的资源占用率、电量、工作模式、网络连接状况、数据传输状况、前台应用程序的名称、前台应用程序的类型、后台应用程序的名称和后台应用程序的类型中的至少一种;其中所述终端设备的工作模式包括休眠模式和唤醒模式。
在上述任一方面或任一方面的任一种可能的实现方式中,触发器触发执行的预定任务包括如下至少一种:开启一个活动(activity),发送一个广播、开启一个服务、或者发起网络通讯。在上述任一方面或任一方面的任一种可能的实现方式中,触发器的特征信息包括:触发器的类型(比如单次触发器或重复触发器)、触发条件、待触发的任务中的至少一项;应用程序的特征信息包括:应用程序的名称/标识、应用程序的类型、应用程序的历史行为特征信息中的至少一项;用户历史行为特征信息包括:用户使用各个应用的频率、时间、所在的位置、运动状态中的至少一项。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍。
图1是本申请实施例的终端设备的结构示意图。
图2是本申请实施例的终端设备的逻辑架构示意图。
图3是本申请一个实施例的管理触发器的方法流程图。
图4是本申请另一实施例的管理触发器的方法流程图。
图5是本申请另一实施例的管理触发器的方法流程图。
图6是本申请另一实施例的管理触发器的方法流程图。
图7是本申请另一实施例的管理触发器的方法流程图。
图8是本申请实施例一个实施例提供的终端设备管理触发器的过程示意图。
图9是本申请一个实施例中管理触发器的工作流程图。
图10是本申请另一个实施例中管理触发器的工作流程图。
图11是本申请实施例提供的终端设备管理闹钟(alarm)的过程示意图。
图12是本申请实施例提供的多触发器队列的示意图。
图13是本申请一个实施例提供的终端设备的示意性结构图。
图14是本申请另一实施例提供的终端设备的示意性结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行详细描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部实施例。
本申请实施例提供的方法用于管理终端设备(terminal device)上的应用程序所设置的触发器(trigger),以动态改变触发器触发应用程序执行预定任务的时机。其中,终端设备指向用户提供语音和/或数据连通性的设备,包括无线终端或有线终端。无线终端可以是具有无线连接功能的手持式设备、或连接到无线调制解调器的其他处理设备,或经无线接入网与一个或多个核心网进行通信的移动终端。例如,无线终端可以是移动电话(或称为“蜂窝”电话)和具有移动终端的计算机。又如,无线终端也可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动装置。再如,无线终端可以为移动站(mobile station,MS)、接入点(access point,AP)、或用户设备(user equipment,UE)的一部分。本申请的说明书和权利要求书及附图中的术语“触发器(trigger)”是指应用程序设置的用于在设定的触发条件满足时通过外部事件触发预定任务的逻辑功能。触发器的触发条件可以是时间维度的条件,比如触发时间(triggering time),或者时间间隔;触发器的触发时间是一个特定的时间点,即触发预定任务的时刻或时机(timing),时间间隔是指重复触发预定任务的时间间隔。触发条件也可以与终端设备的状态相关的其它维度的条件,比如终端设备的剩余资源量、工作模式等。可以理解,触发器的触发条件还可以同时包含时间维度的条件以及终端设备状态维度的条件,比如以2小时为间隔周期,在设备空闲或充电的时候触发执行相应任务的触发器。终端设备中的触发器通常包括用于定时或周期性触发预定任务的闹钟(alarm)或定时器(timer),或者根据设定的条件触发任务的任务信息(JobInfo)对象。可以看出,一个触发器至少包含触发条件和预定任务(scheduled task)两个维度的特征信息,其中,预定任务表示等待被触发器触发的任务,触发条件表示触发该预定任务需要满足的条件,比如触发任务的时机。触发器的触发条件和预定任务是由应用程序设置的。触发器支持一次性定时任务和循环定时任务,当触发器被设置为触发一次性定时任务时,其触发条件包括触发时间,当触发器被设置为触发循环定时任务时,其触发条件还包括触发该任务的时间间隔或周期。应理解的是,除了终端设备以外,本申请实施例提供的方法也可以应用于其他类型的计算机系统。
图1为本申请实施例提供的终端设备的结构示意图。如图1所示,终端设备100包括处理器150、存储器180、输入设备130以及输出设备140。存储器180存储有计算机程序或指令,该计算机程序包括操作系统182和应用程序181等。处理器150被配置用于执行存储器180中的计算机程序,从而实现该计算机程序定义的方法,例如处理器150执行操作系统182从而在该终端设备100上实现操作系统的各种功能。
处理器150可以包括一个或多个处理器,例如,处理器150可以包括一个或多个应用处理器,或者包括一个应用处理器和一个基带处理器。当处理器150包括多个处理器时,这多个处理器可以集成在同一块芯片上,也可以各自为独立的芯片。一个处理器可以包括一个或多个处理核。
存储器180还存储有除计算机程序之外的其他数据183,其他数据183可包括操作系统182或应用程序181被运行后产生的数据,该数据包括系统数据(例如操作系统的配置参数)和用户数据。
存储器180一般包括内存和外存。内存包括但不限于随机存取存储器(RandomAccess Memory,RAM),只读存储器(Read-Only Memory,ROM),或高速缓存(cache)等。外存包括但不限于闪存(flash memory)、硬盘、光盘、通用串行总线(universal serial bus,USB)盘、软盘或磁带机等。计算机程序通常被存储在外存上,处理器在执行计算机程序前会将该程序从外存加载到内存。
在一个实施例中,操作系统182中包含了用于实现本申请实施例所提供的管理触发器的方法的计算机程序,从而使得处理器150运行操作系统182后,实现本申请实施例提供的管理触发器的方法的步骤。
输入设备130,用于接收用户输入信息,比如数字/字符信息、触摸操作或手势,以及产生对应的输入信号。具体地,在一个实施例中,该输入设备130包括触控面板。触控面板,也称为触摸屏,可收集用户在其上的触摸操作,并生成触控信号以驱动相关的组件响应用户的操作。触控面板可包括触摸检测装置和触摸控制器。其中,触摸检测装置检测用户的触摸方位,将触摸操作对应的信号传送给触摸控制器;触摸控制器从触摸检测装置接收触摸信号,并将它转换成触点坐标,再发送给该处理器150进行处理。除了触控面板,输入设备130还可以包括其他输入设备,其他输入设备包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
输出设备140可以包括扬声器等音频输出设备,以及显示设备。该显示设备可以为液晶显示器(Liquid Crystal Display,LCD)或有机发光二极管(Organic Light-EmittingDiode,OLED)显示面板。在一些实施例中,触控面板可覆盖显示设备上,以形成触摸显示屏。
除以上之外,终端设备100还包括用于提供精确的实时时间或者时间标准的时钟120,以及用于给其他模块供电的电源190。时钟120具体可以为实时时钟(Real-timeclock,RTC),RTC是指可以像时钟一样输出实际时间的电子设备,一般由集成电路构成,因此也称为时钟芯片。时钟120通常以石英晶体谐振器为其时钟频率的来源,若使用石英晶体谐振器,多半谐振器的频率会和石英钟中的谐振器频率相同,为32.768kHz。时钟120可以通过备用电池供电,因此,即使电源190关闭,它也可以继续工作。在一个实施例中,时钟120包括:计时器和定时器,计时器主要实现计时功能,将当前的时间,比如秒,分,时,日期,星期,月和年以二进码十进数(Binary-Coded Decimal,BCD)码的格式实时写入计时寄存器。定时器也有一个对应的寄存器,即定时寄存器,用于保存触发时间,当计时寄存器的值增加到定时寄存器的值,即触发时间到达时,定时器就会产生一个中断,操作系统182感知到这一中断后会执行相应的操作。
可选地,当终端设备100为无线终端时,其还包括射频电路110和天线170;相应地,处理器150包括至少一个基带处理器;基带处理器、射频电路110和天线170配合实现无线信号的接收和发送功能,比如调制解调、信号放大和滤波、均衡等。
可选地,终端设备100还包括一个或多个传感器160,例如加速度传感器、光传感器等。
本申请实施例提供的管理触发器的方法可由终端设备100的软件、硬件和/或固件的适当组合执行。例如,可以由图1所示的操作系统182结合必要的硬件来实施。
在一个实施例中,终端设备100所包含的组件,从逻辑上又可划分为如图2所示的硬件层250、操作系统182,以及应用层210。硬件层250包括图1所示的处理器150、存储器180、时钟120、输入设备130、输出设备140等硬件资源。应用层210包括一个或多个应用程序,比如图1所示的应用程序181,应用程序181可以为社交类应用、媒体播放器或浏览器等任意类型的应用程序。操作系统182作为硬件层250和应用层210之间的抽象层,用于提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动等。操作系统182一般也可以划分为内核空间(kernel space)和用户空间(user space)两部分,其中,硬件相关的驱动,比如处理器驱动241、存储器驱动242、时钟驱动243等位于内核空间。应用层210中的应用程序所需的基础服务,比如资源管理器(Resource Manager)231、窗口管理器(WindowManager)233、触发管理器(Trigger Manager)235等位于用户态,以应用程序接口(Application Programming Interface,API)的方式提供给应用程序。所属领域的技术人员可以理解终端100可包括比图1和图2所示的更少或更多的组件,图1和图2所示的该终端设备仅包括与本申请实施例所公开的多个实现方式的更加相关的组件。
图2中的触发管理器235用于统一管理终端设备100的触发器(trigger),其功能可以由处理器150读取并执行存储器180中的计算机程序或指令来实现,该计算机程序或指令可被包含在操作系统182中。如前文所述,触发器被应用程序设置为用于在设定的触发条件满足时触发预定任务。这里的预定任务包括但不限于:开启一个Activity,发送一个广播、开启一个服务或者发起网络通讯。触发器包括但不限于:用于定时或周期性触发预定任务的闹钟(alarm)或定时器(timer),以及根据设定的条件触发任务执行的任务信息(JobInfo)对象等。
触发管理器235向应用层210中的应用程序提供API,应用程序通过调用该API设置触发器,设置的触发器的参数通过该API传递给触发管理器235,触发管理器235基于触发器的参数,确定应用程序所设置的触发器,进而对触发器进行管理,参见图3,本申请实施例的触发管理器235管理触发器的方法包括如下步骤:
S301:应用程序181设置一个或多个触发器,其中,触发器的类型、触发条件、待触发任务等信息以参数的形式传递至触发管理器235。在一个实施例中,触发器的触发条件可能与时间相关,例如,应用程序181可以设置用于在设定的触发时间触发预定任务(scheduled task)的闹钟(alarm),或者设置根据设定的时间间隔(触发周期)重复触发预定任务的重复闹钟(repeating alarm)。在这种情况下,应用程序181将闹钟的类型,触发时间以及预定任务等参数传递到触发管理器235;对于重复闹钟,需要传递的信息还包括时间间隔。在另一个实施例中,触发器的触发条件也可能与终端设备的状态,比如网络连接类型、剩余电量、剩余存储空间、是否处于充电状态等相关。应用程序181可以设置在终端设备的状态满足设定条件时触发执行预定任务的触发器,比如安卓操作系统中的JobInfo对象。在另一个实施例中,触发器的触发条件也可能同时与时间以及终端设备的状态相关。例如,应用程序181可以设置以2小时为间隔周期,在设备空闲或充电的时候触发执行相应任务的触发器。
S302:触发管理器235获取应用程序181传递的触发器参数,根据这些参数确定应用程序181所设置的触发器,即确定触发器的类型、触发条件、待触发的预定任务(scheduled task)等关键信息,这些关键信息也可称为触发器的特征信息。触发器的关键信息通常用一个特定的数据结构来记录,比如类、容器、结构体或者数组,这个数据结构实质上就是触发器的逻辑实体,因此触发管理器235确定触发器的过程实质就是根据触发器的参数构建该触发器的逻辑实体,触发管理器235后续对触发器的处理都是基于该逻辑实体。以alarm为例,一个alarm的关键信息可以通过一个Alarm类来记录:
private static class Alarm{
public int type;
public long when;
public long repeatInterval;
public PendingIntent operation;
public int pid};
其中,tpye域记录闹钟的类型;when域记录闹钟的触发时间;repeatInterval域记录执行闹钟的时间间隔,如果闹钟只需要执行一次,则此域为0,如果闹钟需要重复执行,此域为以毫秒为单位的时间间隔;operation域记录闹钟执行时所触发的任务;pid域记录设置闹钟的进程的标识(process identifier)。触发管理器235基于触发器的参数构建该Alarm类来记录闹钟的关键信息,该Alarm类也称为一个逻辑闹钟,触发管理器235基于该逻辑闹钟进行后续处理。
S304:触发管理器235确定触发器的属性。触发器的属性用于区分不同特点的触发器。触发器的属性与触发器的目的、功能、类型、对系统资源的消耗量,对用户体验的影响程度等多个因素中的一个或多个相关。在一个实施例中,可以将用于触发不符合用户意愿或用户使用习惯的触发器,比如用于应用保活(周期性启动某个进程或服务)的触发器定义为恶意触发器,将其属性设置为第一属性;而应用程序基于用户的意愿或为提升用户体验而设置的触发器,比如购物类应用基于用户设置的抢购提醒而设置的提醒闹钟,或实时新闻类应用设置的用于定时触发从服务器预加载内容以减少用户等待时间的触发器,定义为非恶意触发器或善意触发器,其属性设置为第二属性。在另一实施例中,可以将用于触发用户不可感知的任务触发器定义为恶意触发器,将其属性设置为第一属性;将用于触发用户设定的任务或者用户可感知的任务的触发器定义为非恶意触发器,将其属性设置为第二属性。在另一实施例中,可以将占用系统资源(CPU、内存等)较大的触发器定义为恶意触发器,将其属性设置为第一属性;可以将占用系统资源较小的触发器定义为非恶意触发器,将其属性设置为第二属性。
需要说明的是,第一属性和第二属性用于区分不同特点的触发器,不同属性的触发器对应于不同的触发策略。在一个实施例中,不同的属性可以用不同的标识或flag来表示。可以理解的是,除第一属性和第二属性之外,还可以定义更多的属性来对触发器做更细粒度的区分,比如将对于提升用户体验有益的触发器的属性定义为第三属性,本发明实施例不再一一列举。
S306:当触发器的属性为第一属性时,其对应的触发策略为延迟触发,则触发管理器235对该触发器进行延迟处理,使得该触发器被延迟执行,进而延缓触发所述第一应用程序执行预定任务;
S308:当触发器的属性为第二属性时,其对应的触发策略为正常触发,则触发管理器235对该触发器进行正常处理;
S314:当触发器的触发条件满足时,触发管理器235将触发器分发(deliver)至应用程序181。将触发器分发至应用程序实质上就是触发应用程序执行触发器所对应的预定任务。具体地,触发管理器235可以将触发器所对应的预定任务发送给应用程序,或者通过接口调用应用程序执行该预定任务。例如,对于alarm,触发管理器235通过广播的方式将待执行的预定任务发送至应用程序,应用程序进而执行该预定任务。对于JobInfo对象,由任务调度器(JobScheduler)通过接口调用的方式触发应用程序执行预定任务,例如,JobScheduler可以调用schedule()方法来触发执行一个预定任务。
可选地,本申请实施例的管理触发器的方法还包括:
S310:当触发器的属性为第三属性时,其对应的触发策略为加速触发,则触发管理器235对该触发器进行加速处理,使得该触发器被加速执行,进而提前触发所述第一应用程序执行预定任务。
可以理解的是,若确定触发器为某种特定的属性,比如对系统危害较大的触发器,触发管理器235可以直接阻塞或禁止该触发器。
可选地,当触发器的触发条件满足,触发管理器235在分发该触发器之前,可以进一步根据终端设备当前的状态,判断当前是否分发该触发器至应用程序。具体地,参照图3,在执行步骤S314分发触发器之前,本申请实施例的管理触发器的方法还包括:
S312:根据终端设备当前的状态,判断终端设备当前的状态是否满足预设分发条件,若不满足预设分发条件,则延迟该触发器的分发。其中,可以通过多种方式来延迟触发器的分发。例如,如图3所示,触发管理器235可以将触发器加入缓存队列,并等待预设时长之后再次进入S312中的判断流程;若判断终端设备的当前状态满足预设分发条件,则执行步骤S314以将触发器分发至应用程序181。又例如,触发管理器235可以对触发器再次进行步骤S306的延迟处理。又例如,触发管理器235可以对触发器执行步骤S308的正常处理。以上这几种方式均能起到延迟触发器分发的作用。
步骤S312中的判断所依据的终端设备的状态包括但不限于以下至少一个维度的信息:资源占用率、电量、工作模式、网络连接状况、数据传输状况、前台的应用程序的名称、前台应用程序的类型、后台应用程序的名称和后台应用程序的类型;这里的工作模式包括休眠模式和唤醒模式。在一个实施例中,触发管理器235可以使用单个维度的信息来判断是否要分发该触发器,比如电量低于设定阈值,或者资源占用率高于设定阈值,则延迟分发触发器。在另一个实施例中,触发管理器235可以结合终端设备的状态以及用户当前的操作状态,比如用户当前正在操作的前台应用的类型(是否属于高资源消耗应用)、用户操作前台的频率等、操作频率、持续时间等来判断当前是否要分发该触发器。在另一个实施例中,触发管理器235也可用分类器对以上表征终端设备的状态和/或用户当前的操作状态的多个维度的信息进行处理,以判决当前是否分发该触发器,如果该触发器被判定为不适合触发,则延迟该触发器的分发。其中,分类器可以为支持向量机(Support Vector Machine,SVM)、逻辑回归(Logistic Regression,LR)、决策树等分类器。
可以理解的是,S312所描述的判断及延迟分发触发器的步骤可以结合之前的S304、S306和S310执行,也可以单独执行。即触发管理器235可以不执行触发器属性判断以及延迟/加速处理等步骤,而仅在触发器的触发条件满足时,执行S312的判断及延迟分发步骤。
从上述流程可以看出,触发管理器235首先对触发器的“合法性”进行验证,以确定触发器的属性,进而根据触发器的属性,对触发器进行差异化的管理(延迟、阻塞、正常处理或加速),以动态调整触发器的分发时机;在分发触发器之前,进一步地根据终端设备的状态改变分发时机。
在步骤S304中,触发管理器235具体可以基于一个或多个维度的信息来确定触发器的属性,包括但不限于:触发器本身的特征信息、设置该触发器的应用程序的特征信息,以及用户历史行为特征信息。其中,触发器的特征信息包括:触发器的类型(比如单次触发器或重复触发器)、触发条件、待触发的任务中的至少一项;应用程序的特征信息包括:应用程序的名称/标识、应用程序的类型、应用程序的历史行为特征信息中的至少一项;用户历史行为特征信息包括:用户使用各个应用的时间、频率、以及用户使用应用时所在的位置、所处的运动状态中的至少一项;应用程序的历史行为特征信息包括:应用程序的运行日志,应用程序历史设置的触发器的属性,所触发的任务类型等中的至少一项。需要说明的是,以上各个维度的信息可以用专用的数据结构来计记录,也可以包含在终端设备现有的记录文件,比如系统日志或用户日志中,通过分析系统日志或用户日志,可以确定上述信息。
在一个实施例中,触发管理器235可以根据用户历史行为特征信息来确定触发器的属性。用户历史行为特征信息包括用户操作记录,该用户操作记录包括但不限于:应用程序使用记录、用户的个人设置等与用户操作相关的信息。应用程序使用记录记录了用户使用过的应用的名称,比如用户最近使用的应用程序名称。基于对用户操作记录的分析,若设置该触发器的应用程序不是用户最近使用的应用,或者该应用程序不在用户设置的可信任应用程序的白名单中,则确定该触发器为恶意触发器,即属性为第一属性;否则确定其属性为第二属性。
在一个实施例中,为了提高触发器属性判断的准确性,触发管理器235可以结合以上描述的至少两个维度的信息来确定触发器的属性。例如,基于对用户历史行为特征信息的分析,若设置该触发器的应用程序不是用户最近使用的应用,并且该触发器的类型为重复触发器,则确定该触发器为恶意触发器,即属性为第一属性;否则,确定其属性为第二属性。
在另一个实施例中,用户历史行为特征信息包括用户操作记录,该用户操作记录可以为用户日志,其包括但不限于:应用程序使用记录、用户的个人设置等与用户操作相关的信息。应用程序使用记录用于记录用户使用的应用,以及使用该应用时所处的情境(比如时间、位置、运动状态等)。通过统计分析应用程序使用记录,可以获得用户使用各个应用的频率、用户最近使用的应用等反映用户使用习惯的信息。触发管理器235可以参考用户使用习惯、触发器的特征以及应用程序的特征三方面的信息来确定触发器的属性,这里的应用程序是指设置该触发器的应用程序。可以看出,用户操作记录包含了与用户使用习惯或偏好相关的一个或多个维度的信息,应用程序的特征信息包含了与应用程序的行为或属性相关的一个或多个维度的信息,触发器的特征信息包含了触发器自身的类型、触发条件、待触发的任务等维度的信息。触发管理器235可以基于表征用户使用习惯的至少一个维度的信息,表征应用程序的特征的至少一个维度的信息,以及表征触发器的特征的至少一个维度的信息,判断应用程序设置的触发器所触发的任务是否符合用户真实意愿或用户使用习惯,进而确定该触发器的属性。
以上实施例仅仅是实例性的,触发管理器235确定触发器属性时可以使用表征用户使用习惯的一个或多个维度的信息、表征应用程序的特征的一个或多个维度的信息,以及触发器的一个或多个维度的特征信息,或者它们的任意组合。可以理解的是,触发器管理器235所使用的信息的维度越多,其确定出的触发器的属性就越准确。当使用多个维度的信息确定触发器的属性时,触发器管理器235可以将多个维度的信息输入分类器进行处理,以确定触发器的属性,该分类器可以通过机器学习的方式来训练得到。例如,可以使用支持向量机(Support Vector Machine,SVM)、逻辑回归(Logistic Regression,LR)、决策树等分类器。下面通过一个具体的实例来说明触发器管理器235确定触发器属性的过程。
例如,假设应用程序181通过触发器管理器235的API设置了触发器X,触发器管理器235先确定如下维度的信息:
应用程序181的类型:比如是否为时间强相关应用,如股票类、即时通讯类或实时新闻类应用。如果不是时间强相关应用,其设置触发器可能并不是用户的真实需求,则该维度标记为1,否则为0;
触发器X的特征:常见的一些用于应用保活的触发器,多为重复触发器,如设置每5分钟拉起该应用一次。因此,可以对触发器的触发时间参数进行分析,若其触发时间参数包括某个时间间隔或周期,则确定其为重复触发器,很可能是用于应用保活,则该维度标记为1,否则为0。
触发器X所触发的任务的特征:比如触发的任务是否为用户不可感知型。一般由用户主动设置的触发器,比如闹钟触发后,会产生用户可感知的行为,包含可见的活动(activity)切到前台、后台播放声音状态发生变化等。而恶意触发器触发的任务通常是用户无法感知的,比如启动某个服务并在后台运行。如果是触发用户可感知的任务,则该维度标记为0,否则为1。
用户历史行为特征:比如用户最近使用的应用程序。对于长期用户没有使用过的应用程序所设置的触发器,很可能为用于应用保活的触发器。如果是最近使用的应用,该维度标记为0,否则为1。
单独使用以上维度信息中的一种难以判断触发器是否为恶意触发器,因此通常需要综合参考以上各个维度的信息来判断。在一个实施例中,可以赋予每个维度的信息以特定的权重,然后对上述各个维度信息进行加权运算,当计算结果满足设定阈值时,确定触发器A1为恶意触发器。在另一个实施例中,也可以将以上各个维度的信息抽象为向量,然后在二元分类器中进行分类处理,以确定触发触发器的属性(比如是否为恶意触发器),该二元分类器可以使用SVM、LR、决策树等机器学习领域常用的分类器,具体分类决策的过程为现有技术,不在此赘述。
可以理解的是,以上描述的是基于用户历史行为特征信息、触发器的特征以及应用程序的特征的多维度的信息综合判断应用程序设置的触发器的属性的具体实施例。基于该实施例,本领域人员还可以使用更多维度的信息以及更多的信息组合方式来进行触发器属性的判断。
在另一个实施例中,触发管理器235也可以直接根据应用黑/白名单来确定应用所设置的触发器的属性。比如,假设用户配置了指示可信任应用的白名单,则对于白名单中的应用所设置的触发器,可默认为非恶意触发器,因此触发管理器235可以通过查询该白名单来确定触发器的属性。类似地,用户也可以设置黑名单,以指示存在设置恶意触发器行为的“危险”应用程序,若某个应用程序被列入黑名单,则其设置的触发器也被判定为恶意触发器。因此,触发管理器235通过查询黑名单,也可以确定触发器的属性。黑/白名单可以由用户来配置,也可以从第三方服务器获取,本发明实施例不做特别限定。
不同属性的触发器对应于不同的触发策略。例如,触发管理器235可以设置:第一属性的触发器对应的触发策略为延迟触发,第二属性的触发器对应的触发策略为根据应用设置的触发时间正常触发;第三属性的触发器对应的触发策略为加速触发。在一种可能的实现方式中,终端设备100可以维护一个触发策略库,该触发策略库记录了应用程序的特性信息与触发策略的映射关系,比如表1所示的实例中,触发策略库包含应用程序名称与触发策略的对应关系。触发管理器235根据应用程序的名称查询该触发策略库,即可确定该应用程序所设置的触发器的触发策略。或者更精细地,触发策略库可以记录应用程序的特性信息、触发器的特征信息以及触发策略的对应关系,如表2的示例,触发策略库包含应用程序名称、触发器类型,时间间隔(触发周期)、触发策略等多个维度的信息。触发管理器235根据应用程序的特征以及触发器本身的特征查询该触发策略库,以确定触发器的触发策略。其中,触发策略库可以由用户来配置,也可以从服务器下载,或者由服务器推送给终端设备100。
应用程序名称 | 触发策略 |
A | 加速触发 |
B | 延迟触发 |
表1触发策略库示例1
应用程序名称 | 触发器类型 | Interval | 触发策略 |
A | repeating alarm | <300s | 延迟触发 |
B | JobInfo object | >5min | 正常触发 |
表2触发策略库示例2
触发管理器235确定出触发器的策略之后,就可以基于触发策略来对触发器进行相应的处理,包括但不限于:延迟处理、正常处理和加速处理。其中,对触发器的处理主要包括设置触发条件至底层以及将触发器加入触发器队列;对于触发器的加速处理和延迟处理可能还包括修改触发条件。图4示出了触发管理器235对触发器进行延迟处理、正常处理以及加速处理的一种具体实例。
参照图4,触发管理器235对第二属性的触发器进行正常处理,包括:
S3085:将触发条件,例如触发时间和/或时间间隔(触发周期)配置到底层(驱动和/或硬件)。对于第二属性的触发器,触发管理器235设置到底层的触发条件与应用程序181设置的触发条件相同或者实质相同。当触发条件满足时,底层向触发管理器235上报触发事件,触发管理器235进而执行触发器的分发流程,即步骤S312和S314,相关细节可以参照图3相关的实施例。
进一步地,如图4所示的步骤S3065、S3105和S3085所示,触发管理器235可以对应用程序181设置的触发条件进行修改后再设置到底层,以使该触发条件被延迟或提前满足,从而实现对触发器延迟或加速处理。触发器的触发条件通常通过与时间和/或终端设备的状态相关的一个或多个参数来指示,比如触发周期,终端设备状态相关的阈值等等,因此通过修改触发器的部分或全部参数,即可实现对触发器的延迟或加速处理。由于不同的触发器对应的触发条件可能存在差异,因此具体的延迟和加速处理的流程也有所区别,以下几个实施例描述了几种主要的触发器的延迟和加速处理过程:
对于触发条件与时间相关的触发器,比如alarm:触发管理器235可以将触发器的触发时间和/或时间间隔(触发周期)修改后再配置到底层时钟。具体地,若要延迟触发器,则可以将应用程序181初始设置的触发时间延迟预设时长后通过驱动配置到底层时钟;对于重复型的触发器,可以将初始设置的触发周期延长预设时长后再配置到底层时钟,或者也可以将其触发时间和时间间隔同时延长后再配置到底层时钟。例如,假设初始触发时间为T1,则延迟后的触发时间为T1+N1。对于重复型的触发器,还可以将其触发周期延长预设时长后再配置到底层时钟。例如,假设应用程序181设置的初始触发周期为T2,则延迟后的触发周期为T2+N2。其中,N1和N2可以根据具体的应用场景灵活设置,在此不做特别限定。相应地,若要加速触发器,则可以将触发时间提前预设时长后再配置到底层时钟;对于重复型的触发器,还可以将其时间间隔(触发周期)缩短预设时长后再配置到底层时钟。
对于触发条件与时间无关,而与终端设备的状态相关的触发器,其触发条件通常包括一个或多个与设备状态相关的参数,因此,触发管理器235通过修改部分参数来实现对触发器的延迟或加速。例如,若触发器的触发条件为终端设备的剩余电量不低于某个设定阈值,则触发管理器235通过修改该电量阈值,即可实现加速或延迟的效果。增大该阈值,则触发器会被延迟执行,而减小该阈值,则触发器可能会被加速执行。
对于触发条件即与时间相关,也与终端设备的状态相关的触发器,触发管理器235可以修改时间相关的参数,也可以修改与设备状态相关的参数,也可以两者都修改。
需要说明的是,在步骤S312判断当前不分发该触发器时,可以重新将触发器的触发条件设置到底层,并等待底层上报触发事件,以执行触发器分发的流程。可选地,也可以执行步骤S3065,具体如图4所示。
进一步地,在图4所示实施例的基础上,为了更好地管理不同属性的触发器,可以针对多个不同类型的触发器队列,比如用于缓存第二属性的触发器的正常触发器队列、用于缓存第一属性的触发器的延迟触发器队列,以及用于缓存第三属性的触发器的加速触发器队列。不同的触发器队列中的触发器具有不同的触发策略。触发管理器235对正常触发器队列中的触发器执行正常处理流程,对延迟触发器队列中的触发器执行延迟处理流程,而对加速触发器队列中的触发器执行加速处理流程。具体地,如图5所示,触发管理器235将第一属性的触发器加入延迟触发器队列,将第二属性的触发器加入正常触发器队列,将第三属性的触发器加入加速触发器队列。同时,对于延迟触发器队列和加速触发器队列中的触发器,触发管理器235会对其触发条件进行修改后再配置到底层。具体实现细节可参见图4相关实施例,不再赘述。
进一步地,在图5所示的实施例的中,对于第一属性的触发器,也可以不修改其触发条件来实现延迟处理。具体地,如图6所示,触发管理器235可以不修改应用程序181设置的触发条件,而是直接将与应用程序181设置的触发条件相同或者实质相同的触发条件设置到底层,当触发条件满足时,底层向触发管理器235上报触发事件,触发管理器235并不立即执行S312和S314的分发流程,而是等待预设时长后再执行触发器的分发流程,即步骤S312和S314,相关细节可以参照图3相关的实施例。可选地,在等待预设时长后,触发管理器235可以再次确认触发条件是否满足,若满足,则执行触发器的分发流程,否则继续等待预设时长后再次确认触发条件。这里的预设时长可以根据具体的场景灵活设置,本发明实施例不做特别限定。
可选地,在另一个实施例中,如图7所示,触发管理器235对触发器属性的判断(步骤S304)可以嵌入到触发器的分发流程中。具体地,根据图7,触发管理器235获取触发器的参数后,设置触发器的触发条件至底层;当触发条件满足时,执行步骤S304以确定触发器的属性;当触发器的属性为第一属性时,其对应的触发策略为延迟触发,则触发管理器235在等待预设时长之后再进入S312和S314所示的分发流程,以实现延迟触发器的效果;当触发器的属性为第二属性时,其对应的触发策略为正常触发,则触发管理器235直接进入S312和S314所示的分发流程以将触发器分发至应用程序181;其中步骤S312是可选的。图7中各个步骤的具体实现细节可以参照前面的实施例。
下面结合图8至图10进一步描述触发管理器235对不同属性的触发器实施差异化的触发策略的过程。
图8所示的应用程序103、105和107是终端设备100上的示例应用,所属领域的技术人员可理解成终端设备100可包含任何数量的应用程序。应用程序可以设置多个触发器,以触发执行多个设定任务。例如,通过触发管理器235提供的Set()方法,应用程序103设置触发时间为T+N1的触发器A1,应用程序105设置触发时间为T+N2的触发器A2,并且应用程序107设置触发时间为T+N3的触发器A3。触发器A1,A2和A3对应的待触发任务分别为Task1,Task2和Task3。
在一个实施例中,如图9所示,触发管理器235对于触发器A1,A2和A3的处理过程如下:
响应于应用程序103设置触发器A1的操作,触发管理器235确定触发器A1的属性,若A1的属性为第二属性,其对应的触发策略为根据应用设置的触发时间正常触发,则触发管理器235将触发器A1加入正常触发器队列,同时将触发器A1的触发时间T+N1通过时钟驱动243设置到底层时钟120,当A1的触发时间到,时钟120产生中断,时钟驱动243向触发管理器235上报触发事件,响应于该触发事件,触发管理器235将触发器A1分发至应用程序103,以触发应用程序103执行A1对应的任务Task1;
响应于应用程序105设置触发器A2的操作,触发管理器235确定触发器A2的属性,若A2的属性为第一属性,其对应的触发策略为延迟触发,则触发管理器235将触发器A2加入延迟触发器队列,同时将A2的触发时间延迟预设时长后配置到时钟120,当延迟后的触发时间到,时钟驱动243向触发管理器235上报触发事件,响应于该触发事件,触发管理器235将触发器A2分发至应用程序105,以触发分发至应用程序105执行A2对应的Task2。这样,触发器A2的实际触发时间晚于应用程序设置的触发时间,进而导致A2对应的任务被延迟执行,从而可以抑制应用程序通过设置恶意触发器来定时或周期性自启动,减少资源消耗。
进一步地,若应用程序设置的触发器所触发的任务对于提升用户体验有益,比如应用设置的用于在特定时长(比如120s)后停止播放广告的触发器,触发管理器235可以加速该属性的触发器,从而提升用户体验。具体地,若触发管理器235确定应用程序107设置的触发器A3的属性为第三属性,其对应的触发策略为加速触发,则触发管理器235将触发器A3加入加速触发器队列,同时将触发器A3的触发时间T+N3提前预设时长后配置到时钟120,当提前后的触发时间到,时钟驱动243向触发管理器235上报触发事件,响应于该触发事件,触发管理器235将触发器A3分发至应用程序107,以触发应用程序107执行A3对应的Task3。这样,触发器A3的实际触发时间早于应用程序设置的触发时间,进而使得A3对应的任务被提前迟执行,在某种程度上可以提升用户体验。
在另一个实施例中,如图10所示,对于触发器A2,触发管理器235也可以不修改其触发条件来实现延迟处理。根据图10,触发管理器235不修改应用程序181设置的触发条件,而是直接将与应用程序181设置的触发条件相同或者实质相同的触发条件设置到底层时钟,当A2的触发时间到达,底层向触发管理器235上报触发事件,触发管理器235并不立即分发A2至应用程序105,而是等待预设时长后再执行触发器的分发流程。
所属领域的技术人员可以理解,触发管理器235可以设置任意数量的触发器队列,触发管理器235根据触发器的属性,将触发器A1、A2和A3加入不同的触发器队列。例如,将属性为第二属性的触发器A1加入正常触发器队列251,将属性为第一属性的触发器A2加入延迟触发器队列253,以及将属性为第三属性的触发器A3加入加速触发器队列255,以进行针对性处理。关于触发器的属性的定义及确定方法也可以参照前述实施例。不再赘述。
在一个实施例中,与前述图3至图7所示的实施例类似,触发管理器235在分发一个触发器之前,可以进一步根据终端设备当前的状态,判断终端设备当前的状态是否满足预设分发条件,若不满足预设分发条件,则延迟该触发器的分发。其中,该判断以及延迟分发的具体实现细节可以参照图3相关实施例中步骤S312的描述。另外,若触发管理器235设置有多个不同时间流速的触发器队列,延迟触发器的分发除了采用S312中所描述的方式,还可以采用如下方式:将该触发器加入到时间流速更低的队列中,例如,如果该触发器之前位于正常触发器队列251,则可以将其迁移至延迟触发器队列253。可以理解的是,基于对触发器是否分发的判断,触发器可以在不同的触发器队列中迁移。
本发明实施例提供的触发管理器,基于对触发器属性的判断,对不同属性的触发器采用差异化的处理策略,使得应用基于保活或其它不符用户真实意愿的目的而设置的恶意触发器被延迟触发,从而抑制应用程序通过设置恶意触发器来定时或周期性触发任务,减少资源消耗;进一步地,对于某些为提升用户体验而设置的触发器,可以加速其触发,从而获得更佳的用户体验;更进一步地,触发器管理器在将触发器分发至应用之前,基于终端设备当前的状态,判断当前是否分发该触发器,若终端当前的状态不满足分发条件,则延迟将该触发器分发至应用程序,从而可以进一步减少资源消耗。
本发明实施例的触发管理器235可由软件、硬件和/或固件的适当组合实现。在一个具体的示例中,对于使用安卓操作系统的终端设备100,当上述的触发器为闹钟(alarm)时,则上述实施例所描述的触发管理器235可以实现为闹钟管理器(Alarm Manager)235与闹钟管理服务(AlarmManagerService)233的组合,用于实现闹钟(alarm)的差异化管理,如图11所示。根据图11,操作系统182划分为内核空间(kernel space)和用户空间(userspace)两部分,其中,硬件相关的驱动,比如显示器驱动241、音频驱动242、时钟驱动243等位于内核空间。应用层210中的应用程序所需的基础服务,比如闹钟管理器(AlarmManager)235和AlarmManagerService 233等位于用户态,Alarm Manager 235支持一次性定时任务和循环定时任务,其向应用程序提供接口(Application ProgrammingInterface,API)。比如,Alarm Manager 235可以向应用程序提供如下接口:
void set(int type,long triggerAtMillis,PendingIntent operation);设置单次闹钟;
void setRepeating(int type,long triggerAtMillis,long intervalMillis,PendingIntent operation);设置重复闹钟;
其中,上述接口也可被称为Alarm Manager 235的成员函数,它们使用的参数包括:
type,表示闹钟的类型,安卓系统定义了4种闹钟类型:RTC_WAKEUP、RTC、ELAPSED_REALTIME_WAKEUP和ELAPSED_REALTIME,具体的定义可以参照安卓系统的相关说明,在此不再赘述;
triggerAtMillis,表示闹钟应被触发的时机,即触发时间;
operation,指明了alarm触发时需要执行的动作,比如执行某种广播通告等;
intervalMillis,表示重复闹钟的时间间隔或触发周期。
另外,triggerAtTime参数的代表的含义也会随type参数的不同而不同。例如,如果type是RTC或RTC_WAKEUP的话,那么triggerAtTime的值应该是标准时间。而如果type是其他类型的话,那么triggerAtTime的值应该是从终端设备本次开机开始算起的毫秒数。
应用程序通过调用AlarmManager 235的接口,可以把闹钟的参数传递到AlarmManagerService 233,AlarmManagerService 233是一个binder实体,其与AlarmManager 235具有对应关系,AlarmManager 235对闹钟的管理功能实际上都是由AlarmManagerService 233来完成的。
具体地,把AlarmManagerService 233构建一个对应的逻辑闹钟来记录闹钟相关的关键信息,该逻辑闹钟采用特定的数据结构,比如类、数组、结构体等等。进一步地,AlarmManagerService 233将该逻辑闹钟添加到闹钟列表(AlarmList)中,与图8所示的实施例类似,AlarmManagerService 233会维护多个不同的AlarmList,比如正常AlarmList1、以及延迟AlarmList 2。可选地,AlarmManagerService 233还可以维护加速AlarmList,以满足部分alarm加速触发的需求。相应地,对于每一个alarm,AlarmManagerService 233会首先确定该alarm的属性,进而根据该alarm的属性对应的触发策略,将其加入到对应的AlarmList中。如图12所示,AlarmManagerService 233会把触发时间相近的Alarm放在AlarmList中的同一个批次(batch)中,而每个batch根据时间排序放在AlarmList中。如果某个alarm没有与任何一个alarm的触发时间相近,那么AlarmManagerService 233会新建一个batch专门存放该alarm。
进一步地,AlarmManagerService 233会将alarm的触发时间设置到底层RTC 120,例如,可以通过rescheduleKernelAlarmsLocked函数将alarm的触发时间设置到RTC。具体地,对于属性为第一属性的alarm,比如用于应用保活的alarm,其对应的触发策略为延迟触发,因此AlarmManagerService 233将其触发时间延迟特定时间后设置到底层RTC;对于属性为第二属性的alarm,比如应用程序基于用户的意愿而设置的alarm,其对应的触发策略为正常触发,则AlarmManagerService 233将其触发时间设置到底层RTC;对于属性为第三属性的alarm,其对应的触发策略为加速触发,则AlarmManagerService 233将其触发时间提前预设时长后设置到底层RTC。
AlarmManagerService 233会开启一个线程循环侦听处理底层RTC上报的闹钟触发事件,RTC上报闹钟触发事件,意味着为AlarmManagerService 233设置到RTC的某个alarm的触发时间到了,响应于该闹钟触发事件,AlarmManagerService 233从Alarmlist中取出该alarm,将其加入触发列表(TriggerList),如果终端设备100当前的状态满足预设分发条件,则AlarmManagerService 233将TriggerList中的alarm分发给应用程序,否则,将延迟TriggerList中的alarm的分发。其中,分发alarm的过程就是执行它的alarm.operation.send()函数将alarm对应的任务发送给应用程序的进程,以使应用程序执行该任务,这里的operation就是当初设置该alarm时传递过来的那个PendingIntent对象。另外,对重复闹钟,当AlarmManagerService 233接收到其对应的闹钟触发事件后,除了执行上述流程,还会根据该alarm的触发周期重新计算该alarm下一次触发时间,然后设置到底层RTC。
本发明实施例提供的技术方案,根据用户使用习惯、闹钟的特征和应用的特征,动态判断应用程序设置的闹钟的属性,对不同属性的触发器执行差异化的触发策略,从而减少对系统和用户无益或有害的事件,达到减少对前台可用资源影响、降低功耗的效果。
在另一个具体的示例中,对于使用安卓操作系统的终端设备100,当上述的触发器为JobInfo对象时,则上述实施例所描述的触发管理器235可以实现为任务调度器(JobScheduler)以及与JobScheduler相关联的其它操作系统组件,如JobService。JobScheduler是一个用于调度各种类型的任务的API,应用程序可以通过JobInfo.Builder类构建JobInfo对象,JobInfo对象包含了调度预定任务所需的参数,应用程序进一步使用JobScheduler的schedule()方法将应用程序构建的JobInfo对象传递给JobScheduler。当满足JobInfo对象的触发条件时,JobScheduler触发应用程序执行此JobInfo对象对应的任务。具体地,JobScheduler会根据JobInfo对象本身的特征信息,构造该JobInfo对象的应用程序的特征信息,以及用户的历史行为特征中的至少一项,确定出该JobInfo对象的触发策略,进而进行延迟处理、正常处理、加速处理;其中对触发器进行以上各种类型的处理的具体细节可以参考之前的各实施例,不再赘述。
基于以上各个实施例描述的管理触发器的方法,本发明实施例还提供一种终端设备200,如图13所示,该终端设备200包括:确定单元710和处理单元720,其中,确定单元710用于获得应用程序设置的触发器,并确定该触发器的属性;处理单元720用于根据该触发器的属性,对该触发器进行延迟处理、正常处理或者加速处理。其中,确定单元710和处理单元720可由软件、硬件和/或固件的适当组合实现,比如实现为包含在操作系统中的由代码实现的一个或多个功能模块。在另一个实施例中,确定单元710和处理单元720也可以为处理器。确定单元710确定触发器属性的具体实现细节,以及处理单元720对触发器进行延迟处理、正常处理或者加速处理的具体细节,均可以参照各个实施例中的相关描述。
本发明实施例还提供一种终端设备400,如图14所示,该终端设备400包括:处理电路402,以及与其连接的通信接口404和存储介质406。
处理电路402用于处理数据,控制数据访问和存储,发出命令以及控制其它组件执行操作。处理电路402可以被实现为一个或多个处理器,一个或多个控制器和/或可用于执行程序的其它结构。处理电路402具体可以包括通用处理器,数字信号处理器(DSP),专用集成电路(ASIC),现场可编程门阵列(FPGA)或其它可编程逻辑组件中的至少一种。通用处理器可以包括微处理器,以及任何常规的处理器,控制器,微控制器,或状态机。处理电路302也可以实现为计算组件,例如DSP和微处理器的组合。
存储介质406可以包括非瞬时计算机可读存储介质(non-transitory computer-readable storage medium),如磁存储设备(例如,硬盘,软盘,磁条),光存储介质(例如,数字多功能盘(DVD)),智能卡,闪存设备,随机存取存储器(RAM),只读存储器(ROM),可编程ROM(PROM),可擦除PROM(EPROM),寄存器,以及它们的任意组合。存储介质406可以耦合到处理电路402以使得处理电路402可读取信息和将信息写入到存储介质406。具体地,存储介质406可以集成到处理电路402,或者存储介质406和处理电路302可以是分开的。
通信接口404可包括电路和/或程序以实现终端设备400与一个或多个网络设备(例如,路由器、交换机、接入点等等)之间的双向通信。通信接口404包括至少一个接收电路416和/或至少一个发射电路418。在一个实施例中,通信接口404可以是全部或部分由无线调制解调器来实现。
在一个实施例中,存储介质406中存储有触发管理器程序420,处理电路402被适配为执行存储在存储介质406中的触发管理器程序420,以实现上述图3至11所示的任一实施例中的部分或全部步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (40)
1.一种在终端设备上管理触发器的方法,其特征在于,包括:
确定由所述终端设备上的第一应用程序设置的第一触发器,所述第一触发器被设置为用于在第一时刻触发第一任务;
根据所述第一触发器的属性,确定所述第一触发器的触发策略,所述触发策略包括:正常触发或延迟触发;
当所述第一触发器的触发策略为正常触发时,在所述第一时刻执行所述第一触发器,以触发所述第一任务;
当所述第一触发器的触发策略为延迟触发时,延迟所述第一触发器,使得所述第一任务被触发的时刻晚于所述第一时刻;
其中,所述第一触发器的属性是根据用户历史行为特征信息确定的。
2.如权利要求1所述的方法,其特征在于,所述触发策略还包括:加速触发;
当所述第一触发器的触发策略为加速触发时,加速所述第一触发器,使得所述第一任务被触发的时刻早于所述第一时刻。
3.如权利要求1或2所述的方法,其特征在于,还包括:
根据所述终端设备的状态以及用户当前的操作状态中的至少一项,延迟分发所述第一触发器至所述第一应用程序。
4.如权利要求1或2所述的方法,其特征在于,所述延迟所述第一触发器包括:将所述第一触发器的触发时间由所述第一时刻修改为第二时刻,所述第二时刻晚于所述第一时刻。
5.如权利要求1或2所述的方法,其特征在于,所述终端设备维护有正常触发器队列和延迟触发器队列;当所述第一触发器的属性为第一属性时,所述第一触发器的触发策略为延迟触发,所述延迟所述第一触发器包括:
将所述第一触发器加入所述延迟触发器队列,以及将所述第一触发器的触发时间由所述第一时刻修改为第二时刻,所述第二时刻晚于所述第一时刻。
6.如权利要求5所述的方法,其特征在于,还包括:
将第二应用程序设置的第二触发器加入所述正常触发器队列,其中,所述第二触发器的属性为第二属性,且所述第二属性不同于所述第一属性;所述第二触发器的触发策略为正常触发;
当所述第二触发器的触发时间到达时,根据所述终端设备的状态以及用户当前的操作状态中的至少一项,延迟分发所述第二触发器至所述第二应用程序。
7.如权利要求6所述的方法,其特征在于,所述延迟分发所述第二触发器至所述第二应用程序包括:
将所述第二触发器从所述正常触发器队列迁移到所述延迟触发器队列。
8.如权利要求1,2,6,7任一项所述的方法,其特征在于:
所述第一触发器的属性是根据用户历史行为特征信息确定的,具体为所述第一触发器的属性是根据用户历史行为特征信息和所述第一应用程序的特征信息确定的;
所述第一应用程序的特征信息包括所述第一应用程序的历史行为特征信息和所述第一应用程序的类型中的至少一种;所述用户历史行为特征信息包括所述用户的操作记录。
9.如权利要求3所述的方法,其特征在于,所述终端设备的状态包括所述终端设备的资源占用率、电量、工作模式、网络连接状况、数据传输状况、前台应用程序的名称、前台应用程序的类型、后台应用程序的名称和后台应用程序的类型中的至少一种;其中所述终端设备的工作模式包括休眠模式和唤醒模式。
10.如权利要求1,2,6,7任一项所述的方法,其特征在于,所述第一触发器为闹钟、定时器或任务信息(JobInfo)对象中的一种。
11.一种在终端设备上管理触发器的方法,其特征在于,包括:
确定由所述终端设备上的第一应用程序设置的第一触发器,所述第一触发器用于在设定的触发条件满足时触发所述第一应用程序执行第一任务;
根据用户历史行为特征信息确定所述第一触发器的触发策略,所述触发策略包括:正常触发或延迟触发;
若所述第一触发器的触发策略为正常触发,则当所述设定的触发条件满足时,则执行所述第一触发器,以触发所述第一应用程序执行所述第一任务;
若所述第一触发器的触发策略为延迟触发,则延迟所述第一触发器,以延缓触发所述第一应用程序执行所述第一任务。
12.如权利要求11所述的方法,其特征在于,所述延迟所述第一触发器包括:修改所述第一触发器的触发条件,若修改后的触发条件满足,则执行所述第一触发器,以触发所述第一应用程序执行所述第一任务;所述修改后的触发条件晚于所述设定的触发条件被满足。
13.如权利要求11所述的方法,其特征在于,所述延迟所述第一触发器包括:当所述设定的触发条件成立时,等待预设时长之后再次判断所述设定的触发条件是否满足,若满足,则执行所述第一触发器,以触发所述第一应用程序执行所述第一任务。
14.如权利要求11所述的方法,其特征在于,所述触发策略还包括:加速触发;
当所述第一触发器的触发策略为加速触发时,加速所述第一触发器,以提前触发所述第一应用程序执行所述第一任务。
15.如权利要求14所述的方法,其特征在于,其特征在于,所述加速所述第一触发器包括:修改所述第一触发器的触发条件,若修改后的触发条件满足,则执行所述第一触发器,以触发所述第一应用程序执行所述第一任务;所述修改后的触发条件早于所述设定的触发条件被满足。
16.如权利要求11至15任一项所述的方法,其特征在于,所述执行所述第一触发器包括:
若根据所述终端设备的状态以及用户当前的操作状态中的至少一项,确定满足分发条件,则分发所述第一触发器至所述第一应用程序;否则延迟分发所述第一触发器至所述第一应用程序。
17.如权利要求11至15任一项所述的方法,其特征在于,所述终端设备维护有正常触发器队列和延迟触发器队列;当所述第一触发器的触发策略为延迟触发,所述方法还包括:将所述第一触发器加入所述延迟触发器队列。
18.如权利要求17所述的方法,其特征在于,还包括:
将第二应用程序设置的第二触发器加入所述正常触发器队列,其中,所述第二触发器的触发策略为正常触发;
当所述第二触发器的触发条件满足时,根据所述终端设备的状态以及用户当前的操作状态中的至少一项,延迟分发所述第二触发器至所述第二应用程序。
19.如权利要求18所述的方法,其特征在于,所述延迟分发所述第二触发器至所述第二应用程序包括:
将所述第二触发器从所述正常触发器队列迁移到所述延迟触发器队列。
20.如权利要求11至15任一项所述的方法,其特征在于:
所述根据用户历史行为特征信息确定所述第一触发器的触发策略,具体为根据用户历史行为特征信息和所述第一应用程序的特征信息确定所述第一触发器的触发策略;
所述第一应用程序的特征信息包括所述第一应用程序的历史行为特征信息和所述第一应用程序的类型中的至少一种;所述用户历史行为特征信息包括所述用户的操作记录。
21.如权利要求16所述的方法,其特征在于,所述终端设备的状态包括所述终端设备的资源占用率、电量、工作模式、网络连接状况、数据传输状况、前台应用程序的名称、前台应用程序的类型、后台应用程序的名称和后台应用程序的类型中的至少一种;其中所述终端设备的工作模式包括休眠模式和唤醒模式。
22.如权利要求11至15任一项所述的方法,其特征在于,所述第一触发器为闹钟、定时器或任务信息(JobInfo)对象中的一种。
23.一种终端设备,其特征在于,包括:
确定单元,用于确定由第一应用程序设置的第一触发器以及根据所述第一触发器的属性,确定所述第一触发器的触发策略,所述第一触发器被设置为用于在第一时刻触发第一任务;所述触发策略包括:正常触发或延迟触发;
处理单元,用于当所述第一触发器的触发策略为正常触发时,在所述第一时刻执行所述第一触发器,以触发所述第一任务;当所述第一触发器的触发策略为延迟触发时,延迟所述第一触发器,使得所述第一任务被触发的时刻晚于所述第一时刻;
其中,所述第一触发器的属性是根据用户历史行为特征信息确定的。
24.如权利要求23所述的终端设备,其特征在于,所述触发策略还包括:加速触发;
所述处理单元还用于,当所述第一触发器的触发策略为加速触发时,加速所述第一触发器,使得所述第一任务被触发的时刻早于所述第一时刻。
25.如权利要求23或24所述的终端设备,其特征在于,所述处理单元还用于,根据所述终端设备的状态以及用户当前的操作状态中的至少一项,延迟分发所述第一触发器至所述第一应用程序。
26.如权利要求23至24任一项所述的终端设备,其特征在于,所述处理单元具体用于,将所述第一触发器的触发时间由所述第一时刻修改为第二时刻,所述第二时刻晚于所述第一时刻。
27.如权利要求23至24任一项所述的终端设备,其特征在于,所述终端设备维护有正常触发器队列和延迟触发器队列;当所述第一触发器的属性为第一属性时,所述第一触发器的触发策略为延迟触发,所述处理单元具体用于,将所述第一触发器加入所述延迟触发器队列,以及将所述第一触发器的触发时间由所述第一时刻修改为第二时刻,所述第二时刻晚于所述第一时刻。
28.如权利要求27所述的终端设备,其特征在于,所述处理单元还用于,将第二应用程序设置的第二触发器加入所述正常触发器队列,其中,所述第二触发器的属性为第二属性,且所述第二属性不同于所述第一属性;所述第二触发器的触发策略为正常触发;当所述第二触发器的触发时间到达时,根据所述终端设备的状态以及用户当前的操作状态中的至少一项,延迟分发所述第二触发器至所述第二应用程序,使得所述第二触发器对应的任务被延迟触发。
29.如权利要求28所述的终端设备,其特征在于,所述处理单元具体用于,将所述第二触发器从所述正常触发器队列迁移到所述延迟触发器队列。
30.一种终端设备,其特征在于,包括:确定单元和处理单元;
所述确定单元,用于确定由所述终端设备上的第一应用程序设置的第一触发器,以及根据用户历史行为特征信息确定所述第一触发器的触发策略;其中,所述第一触发器用于在设定的触发条件满足时触发所述第一应用程序执行第一任务,所述触发策略包括:正常触发或延迟触发;
若所述第一触发器的触发策略为正常触发,则所述处理单元用于,当所述设定的触发条件满足时,则执行所述第一触发器,以触发所述第一应用程序执行所述第一任务;
若所述第一触发器的触发策略为延迟触发,则所述处理单元用于,延迟所述第一触发器,以延缓触发所述第一应用程序执行所述第一任务。
31.如权利要求30所述的终端设备,其特征在于,在延迟所述第一触发器的方面,所述处理单元具体用于,修改所述第一触发器的触发条件,若修改后的触发条件满足,则执行所述第一触发器,以触发所述第一应用程序执行所述第一任务;所述修改后的触发条件晚于所述设定的触发条件被满足。
32.如权利要求31所述的终端设备,其特征在于,在延迟所述第一触发器的方面,所述处理单元具体用于,当所述设定的触发条件成立时,等待预设时长之后再次判断所述设定的触发条件是否满足,若满足,则执行所述第一触发器,以触发所述第一应用程序执行所述第一任务。
33.如权利要求31所述的终端设备,其特征在于,所述触发策略还包括:加速触发;
所述处理单元还用于,当所述第一触发器的触发策略为加速触发时,加速所述第一触发器,以提前触发所述第一应用程序执行所述第一任务。
34.如权利要求33所述的终端设备,其特征在于,在加速所述第一触发器的方面,所述处理单元具体用于,修改所述第一触发器的触发条件,若修改后的触发条件满足,则执行所述第一触发器,以触发所述第一应用程序执行所述第一任务;所述修改后的触发条件早于所述设定的触发条件被满足。
35.如权利要求30至34任一项所述的终端设备,其特征在于,所述处理单元具体用于,若根据所述终端设备的状态以及用户当前的操作状态中的至少一项,确定满足分发条件,则分发所述第一触发器至所述第一应用程序;否则延迟分发所述第一触发器至所述第一应用程序。
36.如权利要求30至34任一项所述的终端设备,其特征在于,所述终端设备维护有正常触发器队列和延迟触发器队列;当所述第一触发器的触发策略为延迟触发时,所述处理单元还用于,将所述第一触发器加入所述延迟触发器队列。
37.如权利要求36所述的终端设备,其特征在于,所述处理单元还用于,将第二应用程序设置的第二触发器加入所述正常触发器队列,其中,所述第二触发器的触发策略为正常触发;当所述第二触发器的触发条件满足时,根据所述终端设备的状态以及用户当前的操作状态中的至少一项,延迟分发所述第二触发器至所述第二应用程序。
38.如权利要求37所述的终端设备,其特征在于,所述处理单元具体用于,将所述第二触发器从所述正常触发器队列迁移到所述延迟触发器队列。
39.一种终端设备,包括处理器、存储器及存储在所述存储器上并可被所述处理器执行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至10中任一项所述方法的步骤。
40.一种终端设备,包括处理器、存储器及存储在所述存储器上并可被所述处理器执行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求11至22中任一项所述方法的步骤。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710630643.8A CN109324879B (zh) | 2017-07-28 | 2017-07-28 | 管理触发器的方法及终端设备 |
PCT/CN2018/083104 WO2019019703A1 (zh) | 2017-07-28 | 2018-04-13 | 管理触发器的方法及终端设备 |
EP18838590.0A EP3650983B1 (en) | 2017-07-28 | 2018-04-13 | Method for managing trigger, and terminal device |
US16/749,953 US11243784B2 (en) | 2017-07-28 | 2020-01-22 | Method for managing trigger, and terminal device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710630643.8A CN109324879B (zh) | 2017-07-28 | 2017-07-28 | 管理触发器的方法及终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109324879A CN109324879A (zh) | 2019-02-12 |
CN109324879B true CN109324879B (zh) | 2022-04-22 |
Family
ID=65039382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710630643.8A Active CN109324879B (zh) | 2017-07-28 | 2017-07-28 | 管理触发器的方法及终端设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11243784B2 (zh) |
EP (1) | EP3650983B1 (zh) |
CN (1) | CN109324879B (zh) |
WO (1) | WO2019019703A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7151219B2 (ja) * | 2018-07-05 | 2022-10-12 | 株式会社リコー | 組み込み機器、ウィルススキャンプログラム実行方法、プログラム |
CN110083405B (zh) * | 2019-04-28 | 2020-05-08 | 北京邮电大学 | 一种函数启动方法及装置 |
CN110244834B (zh) * | 2019-05-15 | 2021-06-11 | 深圳市优博讯科技股份有限公司 | 一种应用行为对齐方法及终端设备 |
CN110609712A (zh) * | 2019-09-25 | 2019-12-24 | 上海依图信息技术有限公司 | 网络请求离散化处理方法 |
CN111340147B (zh) * | 2020-05-22 | 2021-12-07 | 四川新网银行股份有限公司 | 基于决策树的决策行为生成方法及系统 |
CN113741994B (zh) * | 2021-06-26 | 2022-07-12 | 荣耀终端有限公司 | 一种视频应用的保活方法以及电子设备 |
CN114138433B (zh) * | 2021-11-18 | 2024-01-12 | 苏州浪潮智能科技有限公司 | 一种任务定时策略的方法、装置及介质 |
CN114745305B (zh) * | 2022-06-15 | 2022-09-09 | 中邮消费金融有限公司 | 一种基于用户行为识别的动态交互方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294512A (zh) * | 2013-06-05 | 2013-09-11 | 广东欧珀移动通信有限公司 | 一种定时器延迟启动方法和系统 |
CN103823711A (zh) * | 2014-03-05 | 2014-05-28 | 华为技术有限公司 | 在Java虚拟机中提供相对定时的方法及装置 |
CN105955444A (zh) * | 2016-04-25 | 2016-09-21 | 深圳市万普拉斯科技有限公司 | 对齐唤醒方法及装置 |
US9516127B2 (en) * | 2013-03-25 | 2016-12-06 | Seven Networks, Llc | Intelligent alarm manipulator and resource tracker |
CN106774786A (zh) * | 2016-11-22 | 2017-05-31 | 珠海市魅族科技有限公司 | 一种功耗控制方法以及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8923873B2 (en) * | 2011-11-14 | 2014-12-30 | T-Mobile Usa, Inc. | Device triggered channel selection |
CN104021019B (zh) | 2014-06-18 | 2016-09-14 | 腾讯科技(深圳)有限公司 | 一种应用自启动的控制方法、终端及服务器 |
-
2017
- 2017-07-28 CN CN201710630643.8A patent/CN109324879B/zh active Active
-
2018
- 2018-04-13 EP EP18838590.0A patent/EP3650983B1/en active Active
- 2018-04-13 WO PCT/CN2018/083104 patent/WO2019019703A1/zh unknown
-
2020
- 2020-01-22 US US16/749,953 patent/US11243784B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9516127B2 (en) * | 2013-03-25 | 2016-12-06 | Seven Networks, Llc | Intelligent alarm manipulator and resource tracker |
CN103294512A (zh) * | 2013-06-05 | 2013-09-11 | 广东欧珀移动通信有限公司 | 一种定时器延迟启动方法和系统 |
CN103823711A (zh) * | 2014-03-05 | 2014-05-28 | 华为技术有限公司 | 在Java虚拟机中提供相对定时的方法及装置 |
CN105955444A (zh) * | 2016-04-25 | 2016-09-21 | 深圳市万普拉斯科技有限公司 | 对齐唤醒方法及装置 |
CN106774786A (zh) * | 2016-11-22 | 2017-05-31 | 珠海市魅族科技有限公司 | 一种功耗控制方法以及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3650983A1 (en) | 2020-05-13 |
CN109324879A (zh) | 2019-02-12 |
EP3650983B1 (en) | 2023-01-11 |
WO2019019703A1 (zh) | 2019-01-31 |
EP3650983A4 (en) | 2020-11-04 |
US20200192682A1 (en) | 2020-06-18 |
US11243784B2 (en) | 2022-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109324879B (zh) | 管理触发器的方法及终端设备 | |
US9152199B2 (en) | Power state dependent wake-up alarm | |
US20180150324A1 (en) | Idle Time Service | |
EP2756385B1 (en) | Managing processes within suspend states and execution states | |
TWI494857B (zh) | 喚醒事件管理方法、喚醒事件管理裝置以及喚醒事件管理電腦程式產品 | |
WO2019128546A1 (zh) | 应用程序处理方法、电子设备、计算机可读存储介质 | |
WO2018041020A1 (zh) | 一种广播消息的管理方法及装置 | |
JP6370498B2 (ja) | コンピューティングデバイス内の複数のsocの間における動作状態の協調のための方法およびシステム | |
EP2756389B1 (en) | Managing processes within suspend states and execution states | |
CN109144232B (zh) | 进程处理方法和装置、电子设备、计算机可读存储介质 | |
CN112530056B (zh) | 降低智能门锁功耗的方法、智能门锁和存储介质 | |
CN102667666A (zh) | 用于经由子系统执行能量管理的方法和装置 | |
WO2015007246A1 (zh) | 移动终端中应用程序的唤醒控制方法、装置和移动终端 | |
US9753517B2 (en) | User-personalized wake policy based on learned user behavior | |
CN106959857B (zh) | 一种电子设备的应用控制方法和装置 | |
EP2756386B1 (en) | Managing processes within suspend states and execution states | |
US9542230B2 (en) | System and method for selective timer coalescing | |
WO2019128573A1 (zh) | 信息处理方法、装置、计算机设备和计算机可读存储介质 | |
CN111782295A (zh) | 一种应用程序的运行方法、装置、电子设备及存储介质 | |
CN110032397B (zh) | 应用处理方法和装置、电子设备、计算机可读存储介质 | |
WO2019128586A1 (zh) | 应用程序处理方法、电子设备、计算机可读存储介质 | |
CN107807855B (zh) | 应用清理方法、装置、存储介质及电子设备 | |
CN113985999A (zh) | 设备管理方法、装置、电子设备和存储介质 |
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 |