智能设备唤醒方法及装置与流程

文档序号:12695496阅读:294来源:国知局
智能设备唤醒方法及装置与流程

本申请涉及电数字数据处理领域,尤其涉及智能设备唤醒方法及装置。



背景技术:

基于容器技术,一个智能设备可以同时支持并且同时运行多个系统,有的系统运行在前台,可以明显感觉到。有的则运行在后台,不能明显感觉到,但是实际上是在运行的,并且可以随时切换到前台。

在手机中,为了降低功耗、节省电能,在用户不操作的时候,手机会把屏幕熄灭,然后在指定的时间之内如果用户仍不操作手机并且手机上运行的应用程序没有让手机必须运行的情况,则手机会进入睡眠状态。在睡眠情况下,手机会把不使用的模块关闭,从而节省功耗。但是有些应用或者系统需要每隔一段时间就把手机唤醒一次进行一些必要的处理,例如微信应用,如果在手机睡眠的情况下,微信应用是得不到运行的,从而也无法进行消息更新。为了及时得到消息更新,应用程序会使用系统的定时器功能,通知系统每隔一定时间通知一下微信,以便让应用执行必要的操作。在系统睡眠之前,系统会把下一次需要唤醒系统的时间设置给系统的定时器硬件,以便使硬件定时器在指定的时间到达之后把系统唤醒并且通知相关的应用。

然而,系统中同时运行了多个应用,并且各个应用希望的唤醒时间各不相同,这样的话系统就可能频繁地被唤醒,从而消耗大量的电力。例如,在双系统手机中,两个系统都需要根据自己的需要来设置系统的唤醒功能,这样的话就会导致出现很多没有必要的唤醒。例如系统A需要在30s钟之后唤醒系统,系统B需要在32秒钟之后唤醒系统。这样的话就会导致系统在30s和32s出现了两次唤醒。从而导致系统的功耗增高。



技术实现要素:

为了克服现有技术中存在的不足,本发明要解决的技术问题是提供一种智能设备唤醒方法及装置,其能减少系统的唤醒次数而降低设备的功耗,但系统的事件并不受到实质性影响。

为解决上述技术问题,本发明的智能设备唤醒方法,其中所述智能设备包含至少两个系统及所述至少两个系统共用内核,所述方法包括:

将所述至少两个系统的各个模块需要系统唤醒的时间通知给所述内核;

所述内核根据接收到的唤醒数据分别形成唤醒事件;

对所有唤醒事件进行分组并使每组唤醒事件对应一个唤醒时间点;

将得到的唤醒时间点在所述内核中按照时间顺序排队;

响应于到达某一唤醒时间点,唤醒系统并通知产生与该唤醒时间点对应的那组唤醒事件的各个模块进行相应处理。

为解决上述技术问题,本发明的智能设备唤醒装置,其中所述智能设备包含至少两个系统及所述至少两个系统共用内核,所述装置包括:

用于将所述至少两个系统的各个模块需要系统唤醒的时间通知给所述内核的装置;

用于使所述内核根据接收到的唤醒数据分别形成唤醒事件的装置;

用于对所有唤醒事件进行分组并使每组唤醒事件对应一个唤醒时间点的装置;

用于将得到的唤醒时间点在所述内核中按照时间顺序排队的装置;

用于响应于到达某一唤醒时间点,唤醒系统并通知产生与该唤醒时间点对应的那组唤醒事件的各个模块进行相应处理的装置。

为解决上述技术问题,本发明的有形计算机可读介质,包括用于执行智能设备唤醒方法的计算机程序代码,所述计算机程序代码包括,用于将所述至少两个系统的各个模块需要系统唤醒的时间通知给所述内核的可执行代码;用于使所述内核根据接收到的唤醒数据分别形成唤醒事件的可执行代码;用于对所有唤醒事件进行分组并使每组唤醒事件对应一个唤醒时间点的可执行代码;用于将得到的唤醒时间点在所述内核中按照时间顺序排队的可执行代码;用于响应于到达某一唤醒时间点,唤醒系统并通知产生与该唤醒时间点对应的那组唤醒事件的各个模块进行相应处理的可执行代码。

为解决上述技术问题,本发明提供一种装置,包括至少一个处理器;及至少一个存储器,含有计算机程序代码,所述至少一个存储器和所述计算机程序代码被配置为利用所述至少一个处理器使得所述装置执行本发明的智能设备唤醒方法的至少部分步骤。

作为本发明所述方法或装置的改进,所述对所有唤醒事件进行分组并使每组唤醒事件对应一个唤醒时间点的步骤或装置包括:对所有唤醒事件按需要系统唤醒的时间先后进行排序的步骤或装置;将在唤醒间隔阈值内的唤醒事件分为一组,根据该组唤醒事件各个唤醒事件需要系统唤醒的时间确定该组唤醒事件的唤醒时间点的步骤或装置。

作为本发明所述方法或装置的进一步改进,所述根据该组唤醒事件各个唤醒事件需要系统唤醒的时间确定该组唤醒事件的唤醒时间点的步骤或装置包括:选取该组唤醒事件各个唤醒事件需要系统唤醒的时间之一作为该组唤醒事件的唤醒时间点的步骤或装置。

作为本发明所述方法或装置的进一步改进,所述根据该组唤醒事件各个唤醒事件需要系统唤醒的时间确定该组唤醒事件的唤醒时间点的步骤或装置包括:对该组唤醒事件各个唤醒事件需要系统唤醒的时间求平均的步骤或装置;将所述求平均获得的时间作为该组唤醒事件的唤醒时间点的步骤或装置。

作为本发明所述方法或装置的另一种改进,所述方法或装置还包括:响应于到达某一唤醒时间点,将该唤醒时间点从所述排队中删除的步骤或装置。

按照本发明,通过系统内核实现多个系统的唤醒请求的协调处理,从而可以显著降低系统功耗。例如,对于双系统,需要综合考虑对系统A和系统B的唤醒,把时间上相近的唤醒整合到一起,只在合适的时间进行一次唤醒操作。例如,在系统A需要在30s钟之后唤醒系统及系统B需要在32秒钟之后唤醒系统的情形下,按照本发明,可以在30s的时候只进行一次唤醒,不进行32s时刻的唤醒操作。当30s的时候,系统A完成了自己需要执行的操作,系统B也会被同时唤醒,执行自己的操作,从而减少唤醒次数以降低功耗。

结合附图阅读本发明实施方式的详细描述后,本发明的其它特点和优点将变得更加清楚。

附图说明

图1为根据本发明方法的一实施例的流程图。

图2为根据本发明方法的另一实施例的流程图。

为清晰起见,这些附图均为示意性及简化的图,它们只给出了对于理解本发明所必要的细节,而省略其他细节。

具体实施方式

下面参照附图对本发明的实施方式和实施例进行详细说明。

通过下面给出的详细描述,本发明的适用范围将显而易见。然而,应当理解,在详细描述和具体例子表明本发明优选实施例的同时,它们仅为说明目的给出。

目前的系统唤醒功能例如Android系统是在应用层由闹钟服务程序来实现管理的,他们会各自管好自己的闹钟事件处理。但是多个系统之间却没有沟通。因为不同的系统之间是运行在不同的名字空间中的,缺少很简单的通讯方法来进行唤醒算法的协调同步。但是他们都需要通过系统内核把这个参数设置到系统硬件中,从而实现系统的唤醒。

图1示出了根据本发明的智能设备唤醒方法的一实施例的流程图。所述智能设备例如可以是手机或其它电子设备,所述智能设备包含至少两个系统及所述至少两个系统共用内核。在此以智能设备包含两个系统即系统A和系统B进行说明。

下面结合图1所示流程图对智能设备唤醒方法的各步骤进行具体说明。

在步骤S102中,系统A和B分别将其各个模块需要系统唤醒的时间通过系统调用通知给内核。

在步骤S104中,内核在拿到各个唤醒数据之后统一进行处理,根据各个唤醒数据分别形成一个唤醒事件。每一个唤醒数据包括但不限于:设置唤醒的模块(例如是定时器设置的,还是微信设置的等)、唤醒的时间(例如早上八点,20分钟之后等),唤醒的具体系统(系统A还是系统B)。系统把当前所有设置下来的唤醒事件都存放到一起,每一个唤醒事件包含上面给出的唤醒数据信息。

在步骤S106中,对所有唤醒事件进行分组并使每组唤醒事件对应一个唤醒时间点。

根据本发明的一种实施方式,所述对所有唤醒事件进行分组并使每组唤醒事件对应一个唤醒时间点包括:对所有唤醒事件按需要系统唤醒的时间先后进行排序;将在预设唤醒间隔阈值内的唤醒事件分为一组,选取该组唤醒事件各个唤醒事件需要系统唤醒的时间之一作为该组唤醒事件的唤醒时间点。

例如,系统A的模块A1定了一个唤醒时间是10点10分,系统A的模块A2定的一个唤醒时间是10点16分,系统B的模块B1定的一个唤醒时间是10点12分,系统B的模块B2定的一个唤醒时间是10点17分,系统B的模块B3定的一个唤醒时间是10点18分。对这些唤醒时间进行排序,系统A或B需要依次在下述时间唤醒:10点10分、10点12分、10点16分、10点17分和10点18分。智能设备的预设唤醒时间间隔例如为3分钟,该唤醒时间间隔可根据需要任意设置。发现10点10分和10点12分及10点16分、10点17分和10点18分彼此分别在该唤醒时间间隔内,因此将这5个唤醒时间分为两组。然后,从该两组唤醒时间分别选取其中的一个唤醒时间作为相应组的所有模块的唤醒时间点,例如分别选择10点10分和10点18分,从而系统的唤醒从5次减少为2次,降低了系统功耗。

根据本发明的另一种实施方式,所述对所有唤醒事件进行分组并使每组唤醒事件对应一个唤醒时间点包括:对所有唤醒事件按需要系统唤醒的时间先后进行排序;将在预设唤醒间隔阈值内的唤醒事件分为一组,对该组唤醒事件各个唤醒事件需要系统唤醒的时间求平均;将所述求平均获得的时间作为该组唤醒事件的唤醒时间点。

例如,系统A的模块a1定了一个唤醒时间是10点10分,系统A的模块a2定的一个唤醒时间是10点16分,系统B的模块b1定的一个唤醒时间是10点12分,系统B的模块b2定的一个唤醒时间是10点17分,系统B的模块b3定的一个唤醒时间是10点18分。对这些唤醒时间进行排序,系统A或B需要依次在下述时间唤醒:10点10分、10点12分、10点16分、10点17分和10点18分。智能设备的预设唤醒时间间隔例如为3分钟,该唤醒时间间隔可根据需要任意设置。发现10点10分和10点12分及10点16分、10点17分和10点18分彼此分别在该唤醒时间间隔内,因此将这5个唤醒时间分为两组。然后,对两组唤醒时间分别求平均,分别得到10点11分和10点17作为相应组的所有模块的唤醒时间点,从而系统的唤醒从5次减少为2次,降低了系统功耗。在求平均得到的唤醒事件不是整数的情形下,可按分钟或按秒取整后作为唤醒时间点。

在步骤S108中,将得到的唤醒时间点在内核列表中按照时间顺序排队。该列表的头部是最早需要系统唤醒的时间点,该时间点会被设置到硬件设备如系统的实时钟,其功能是用户可以配置它在哪个日期的哪个时刻产生中断,该中断到时产生的时候可以让系统硬件CPU等结束休眠状态运行起来。

在步骤S110中,当到达某一唤醒时间点时,实时钟会把系统唤醒,产生与该唤醒时间点对应的那组唤醒事件的各个模块进行相应处理。例如10点11分的时间点到达的时候,系统被唤醒,并且可以知道这次唤醒是定时器唤醒的,执行定时器模块的处理操作。查看唤醒时间点是10点11分的,然后查看系统存储的数据,该时间点对应了系统A的a1模块的10点10分,系统B的b1模块的10点12分,这个时候定时器模块就会让系统A运行起来并且把10点10分这个唤醒事件告诉a1模块然后进行处理,同时把系统B也唤醒起来,让b1模块处理10点12分的事件。

这种唤醒事件的处理方法在多系统上需要放到系统的内核中去进行,因为系统A和系统B的时间处理模块在内核之上的用户空间中大多是隔离的,无法相互知道对方的唤醒具体时间点,但是在向系统硬件进行配置的时候,都需要告诉驱动程序具体的时间点,所以需要由内核中的模块来进行协调统一处理。

图2示出了根据本发明的智能设备唤醒方法的另一实施例的流程图,该实施例与图1所示的实施例类似,但除包括图1所示的各步骤之外,还包括步骤S202,在到达某一唤醒时间点后,除进行上述处理之外,还将列表中的该头部节点删除,并且把下一个时间的值写入硬件中。

在此还提供根据本发明的智能设备唤醒装置的一实施例。所述智能设备包含至少两个系统及所述至少两个系统共用内核。该实施例的智能设备唤醒装置包括:

用于将所述至少两个系统的各个模块需要系统唤醒的时间通知给所述内核的装置;

用于使所述内核根据接收到的唤醒数据分别形成唤醒事件的装置;

用于对所有唤醒事件进行分组并使每组唤醒事件对应一个唤醒时间点的装置;在实施例中,该装置还包括:用于对所有唤醒事件按需要系统唤醒的时间先后进行排序的装置;用于将在唤醒间隔阈值内的唤醒事件分为一组,根据该组唤醒事件各个唤醒事件需要系统唤醒的时间确定该组唤醒事件的唤醒时间点的装置;对于唤醒时间点,可选取该组唤醒事件各个唤醒事件需要系统唤醒的时间之一作为该组唤醒事件的唤醒时间点,也可将对该组唤醒事件各个唤醒事件需要系统唤醒的时间求平均得到的时间作为唤醒时间点,或者以任何其它适当的方式确定唤醒时间点;

用于将得到的唤醒时间点在所述内核中按照时间顺序排队的装置;

用于响应于到达某一唤醒时间点,唤醒系统并通知产生与该唤醒时间点对应的那组唤醒事件的各个模块进行相应处理的装置。

在此所述的多个不同实施例或者其特定特征、结构或特性可在本发明的一个或多个实施方式中适当组合。另外,在某些情形下,只要适当,流程图中和/或流水处理描述的步骤顺序可修改,并不必须精确按照所描述的顺序执行。另外,本发明的多个不同方面可使用软件、硬件、固件或者其组合和/或执行所述功能的其它计算机实施的模块或装置进行实施。本发明的软件实施可包括保存在计算机可读介质中并由一个或多个处理器执行的可执行代码。计算机可读介质可包括计算机硬盘驱动器、ROM、RAM、闪存、便携计算机存储介质如CD-ROM、DVD-ROM、闪盘驱动器和/或例如具有通用串行总线(USB)接口的其它装置,和/或任何其它适当的有形或非短暂计算机可读介质或可执行代码可保存于其上并由处理器执行的计算机存储器。本发明可结合任何适当的操作系统使用。

除非明确指出,在此所用的单数形式“一”、“该”均包括复数含义(即具有“至少一”的意思)。应当进一步理解,说明书中使用的术语“具有”、“包括”和/或“包含”表明存在所述的特征、步骤、操作、元件和/或部件,但不排除存在或增加一个或多个其他特征、步骤、操作、元件、部件和/或其组合。如在此所用的术语“和/或”包括一个或多个列举的相关项目的任何及所有组合。

前面说明了本发明的一些优选实施例,但是应当强调的是,本发明不局限于这些实施例,而是可以本发明主题范围内的其它方式实现。本领域技术人员可以在本发明技术构思的启发和不脱离本发明内容的基础上对本发明作出各种变形和修改,这些变形或修改仍落入本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1