发明内容
有鉴于此,本发明的目的在于提供一种休眠拦截方法及系统,通过配置休眠拦截权限来阻止一部分程序对设备休眠的干涉,从而屏蔽了恶意程序阻止其执行acquire操作。
为实现上述目的,有如下技术方案:
一种休眠拦截方法,根据用户指令为应用程序配置休眠拦截权限,则所述方法包括以下步骤:
当应用程序利用休眠拦截接口发出执行锁定操作和/或释放操作的指令时;判断发出指令的应用程序是否存在休眠拦截权限;
如果存在则按照该应用程序发出的指令执行该操作,如果不存在则屏蔽该指令。
所述为应用程序配置休眠拦截权限具体为:
仅为指定的程序配置休眠拦截权限,对未指定的程序不配置休眠拦截权限;
或仅对指定的程序不配置休眠拦截权限,对未指定的程序配置休眠拦截权限。
所述为指定的程序配置休眠拦截权限或对未指定的程序配置休眠拦截权限具体为:
生成一个配置文件,将需要配置休眠拦截权限的应用程序的名称标识写入一个XML格式的名单中,并将该名单写入所述配置文件。
所述锁定操作和/或释放操作的指令中包含发出指令的应用程序的名称标识,则所述判断发出指令的应用程序是否存在休眠拦截权限具体为:
根据所述指令获取发出指令的应用程序的名称标识,并以该程序的名称标识与所述配置文件中写入需要配置休眠拦截权限的程序名称标识的名单进行对照;
如果该名单中包含该程序的名称标识则认为该程序存在休眠拦截权限;如果该名单中不包含该程序的名称标识则认为该程序不存在休眠拦截权限。
所述方法还包括:
判断系统空置时间是否达到预先设置的进入休眠时间;
当空置时间达到进入休眠时间,则判断是否有应用程序执行了锁定操作;
当任意程序执行了锁定操作,则系统保持唤醒状态;当没有程序执行锁定操作,则系统进入休眠。
所述方法还包括:
当有程序执行锁定操作使系统保持唤醒状态时,设置一个判断周期时间,每隔判断周期时间重新判断是否有应用程序执行了锁定操作;
如果存在则系统保持唤醒状态,直到不存在程序执行锁定操作,则系统进入休眠状态。
一种休眠拦截系统,所述系统包括:
配置模块,用于根据用户指令为应用程序配置休眠拦截权限;
权限模块,用于当应用程序利用休眠拦截接口发出执行锁定操作和/或释放操作的指令时;判断发出指令的应用程序是否存在休眠拦截权限;并生成判断权限结果;
执行模块,用于获取所述判断权限结果,如果判断权限结果为存在休眠拦截权限,则按照该应用程序发出的指令执行该操作,如果判断权限结果为不存在休眠拦截权限,则屏蔽该指令。
所述配置模块包括白名单单元和/或黑名单单元,具体为:
白名单单元,用于获得用户指定出的需要配置休眠拦截权限的程序,仅为指定的程序配置休眠拦截权限,对未指定的程序不配置休眠拦截权限;
黑名单单元,用于获得用户指定出的不需要配置休眠拦截权限的程序,仅对指定的程序不配置休眠拦截权限,对未指定的程序配置休眠拦截权限。
所述系统还包括:
空置时间模块,用于预先设置进入休眠时间,判断系统空置时间是否达到进入休眠时间,当达到进入休眠时间则触发锁定模块;
锁定模块,用于在空置时间模块触发之下,判断是否有应用程序执行了锁定操作,生成判断操作结果;
休眠控制模块,用于获取判断操作结果,当判断操作结果中显示任意程序执行了锁定操作,则系统保持唤醒状态;当没有程序执行锁定操作,则系统进入休眠。
所述系统还包括:
循环模块,用于当有程序执行锁定操作使系统保持唤醒状态时,设置一个判断周期时间,每隔判断周期时间重新判断是否有应用程序执行了锁定操作;如果存在则系统保持唤醒状态,直到不存在程序执行锁定操作,则系统进入休眠状态。
通过以上技术方案可知,本发明存在的有益效果是:通过为应用程序配置休眠拦截权限,禁止了一部分不良程序执行锁定操作,避免了一些程序由于自身功能的不完善,甚至处于一些特定的业务目的,而长时间的阻止设备进入休眠;从而使得系统能够正常的进入休眠状态,降低设备的耗电量,提高电池续航时间。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1所示,为本发明所述方法的一个具体实施例,本实施例中所述方法是基于WakeLock,也就是本实施例中同样是应用程序利用休眠拦截接口执行锁定操作或释放操作。应用程序在执行锁定操作以后,系统将无法进入休眠状态,应用程序也可以通过执行释放操作接触对系统的锁定;当没有任何一个应用程序执行锁定操作时,系统才可以进入休眠状态。
本实施例中所述方法包括以下步骤:
步骤101、根据用户指令为应用程序配置休眠拦截权限;
步骤102、当应用程序利用休眠拦截接口发出执行锁定操作和/或释放操作的指令时;判断发出指令的应用程序是否存在休眠拦截权限;
步骤103、如果存在则按照该应用程序发出的指令执行该操作,如果不存在则屏蔽该指令。
本实施例为本发明所述方法的一个基础实施例,本实施例通过休眠拦截权限的配置,使得用户信任的一部分应用程序具有休眠拦截权限,而另一些恶意程序或者不受信任的程序则不为其匹配该权限,这也就防止了休眠拦截接口的滥用,避免了某些程序长期执行锁定操作,使得系统无法进入休眠的情况发生。由于系统进入休眠状态时耗电功率大幅度降低,所以保证系统能够正常的进入休眠状态,对于硬件设备的节电有着重要的影响。
需要说明是,本实施例中为应用程序配置休眠拦截权限具体可以采取以下两种方式:
一为用户指定出需要配置休眠拦截权限的程序,仅为指定的程序配置休眠拦截权限,对未指定的程序不配置休眠拦截权限;即传统的白名单模式。该模式中用户需要筛选出受到信任的应用程序加入白名单,并为这一部分应用程序配置休眠拦截权限,其他程序均不配置该权限。
另一为用户指定出不需要配置休眠拦截权限的程序,仅对指定的程序不配置休眠拦截权限,对未指定的程序配置休眠拦截权限;即传统的黑名单模式。在这一模式中,用户需要筛选出不被信任的应用程序加入黑名单,仅针对这一部分应用程序不配置休眠拦截权限;对于黑名单以外的应用程序均配置休眠拦截权限。
用户可以根据需要在两种模式中选择一种,或者同时开启两种模式。
参照图2所示,为本发明所述方法的另一个具体实施例,本实施例中,所述方法应用在手持设备的系统软件当中,具体步骤如下:
步骤201、生成一个配置文件,将需要配置休眠拦截权限的应用程序的名称标识写入一个XML格式的名单中,并将该名单写入所述配置文件;
本实施例中,在确定所述需要配置休眠拦截权限的应用程序时,同样可以采取图1所示实施例中的白名单模式或者黑名单模式;在白名单模式下,将白名单中的应用程序名称标识写入XML格式名单;在黑名单模式下,将黑名单以外的应用程序名称标识写入XML格式名单。
而一般来讲,系统中每个应用程序必定会存在一个名称标识,即包名(Package Name),系统中以此对应用程序进行区分和识别。
步骤202、应用程序利用休眠拦截接口发出执行锁定操作和/或释放操作的指令,所述指令包含发出指令的应用程序的名称标识;
步骤203、根据所述指令获取发出指令的应用程序的名称标识,并以该程序的名称标识与所述配置文件中写入需要配置休眠拦截权限的程序名称标识的名单进行对照;
本步骤的目的即判断该应用程序是否存在休眠拦截权限,本实施例中通过对照该应用程序是否被写入了所述XML格式名单当中,也就是如果该名单中包含该程序的名称标识则认为该程序存在休眠拦截权限;如果该名单中不包含该程序的名称标识则认为该程序不存在休眠拦截权限。
步骤204、如果该应用程序存在休眠拦截权限,则按照该应用程序发出的指令执行该操作,如果不存在则屏蔽该指令;
本实施例中,该拦截动作在系统底层完成,拦截动作本身是透明的,也即应用程序所发出的执行锁定操作和/或释放操作的指令后,返回给应用程序的反馈仍然正常,但不存在权限的应用程序所发出的指令即被拦截,不予执行。
在以上三个步骤中,实现的技术效果与图1所示实施例基本一致,配置了休眠拦截权限的应用程序即可以利用休眠拦截接口执行操作并干涉系统进入休眠。当应用程序执行了锁定(acquire)操作,则起到阻止系统进入休眠的作用,当应用程序不需要继续对系统执行acquire操作时,则利用释放(release)操作解除对系统的锁定。
步骤205、判断系统空置时间是否达到预先设置的进入休眠时间;如果达到则进入步骤206;
本实施例中该步骤类似于个人计算机在一定时间内没有被操作,则进入待机状态或睡眠状态的过程。本实施例中可以假设预设的进入休眠时间为5分钟;当所述连续5分钟以上没有对手持设备进行任何操作,则空置时间达到进入休眠时间。
步骤206、当空置时间达到进入休眠时间,则判断是否有应用程序执行了锁定操作;
本实施例中由于应用程序同样存在干涉系统进入休眠的权限,即系统开放了休眠拦截接口,所以即使空置时间达到了进入休眠时间,系统也不能够自行进入休眠。系统还必须判断是否有程序执行了acquire操作。当然在本实施例中通过步骤201至步骤203的配置,只有存在休眠拦截权限的应用程序才能够使用休眠拦截接口执行acquire操作。
步骤207、当任意程序执行了锁定操作,则系统保持唤醒状态;当没有程序执行锁定操作,则系统进入休眠。
本实施例中拦截休眠的机制与现有的WakeLock机制基本相同,当任意程序执行了acquire操作,则系统不能进入休眠,必须保持唤醒;只有在所有程序都没有执行acquire操作的情况下,系统才可以进入休眠。
另外,本实施例中还加入了一种循环机制,具体如下:
当有程序执行锁定操作使系统保持唤醒状态时,设置一个判断周期时间,每隔判断周期时间重新判断是否有应用程序执行了锁定操作;
如果存在则系统保持唤醒状态,直到不存在程序执行锁定操作,则系统进入休眠状态。
也就是设置一个周期,并且按照此周期重复执行步骤205和步骤206。如果某一次判断中,由于某些应用程序执行了acquire操作导致系统不能进入休眠,则一个时间周期之后,重新判断是否有程序执行了acquire操作。如果原来的acquire操作全部被release操作释放的话,则系统进入休眠;如果acquire操作依然存在那么系统保持唤醒,并且在下一个周期继续重复步骤206和步骤207中的判断过程。
本实施例存在的有益效果是,基于传统的WakeLock机制下,阻止了一部分程序对于休眠拦截接口的使用;即坚持了WakeLock机制通过控制休眠来促进设备节电,增强电池续航能力的初衷,也避免了休眠拦截接口的滥用。同时通过循环机制的建立,每隔一段时间对重新判断系统中是否有程序执行acquire操作,实现系统中不存在acquire操作时尽快进入休眠。
参照图3所示,为本发明所述休眠拦截系统的一个具体实施例,本实施例中所述系统包括:
配置模块,用于根据用户指令为应用程序配置休眠拦截权限;
权限模块,用于当应用程序利用休眠拦截接口发出执行锁定操作和/或释放操作的指令时;判断发出指令的应用程序是否存在休眠拦截权限;并生成判断权限结果;
执行模块,用于获取所述判断权限结果,如果判断权限结果为存在休眠拦截权限,则按照该应用程序发出的指令执行该操作,如果判断权限结果为不存在休眠拦截权限,则屏蔽该指令。
本实施例为对应图1所示方法实施例而设计的系统实施例,二者的技术方案在本质上一致。本实施例通过休眠拦截权限的配置,使得用户信任的一部分应用程序具有休眠拦截权限,而另一些恶意程序或者不受信任的程序则不为其匹配该权限,这也就防止了休眠拦截接口的滥用,避免了某些程序长期执行锁定操作,使得系统无法进入休眠的情况发生。由于系统进入休眠状态时耗电功率大幅度降低,所以保证系统能够正常的进入休眠状态,对于硬件设备的节电有着重要的影响。
本实施例中所述配置模块可同时包括两个子单元或包括二者中的任意一个,所述两个子单元分别为白名单单元和黑名单单元。
白名单单元,用于获得用户指定出的需要配置休眠拦截权限的程序,仅为指定的程序配置休眠拦截权限,对未指定的程序不配置休眠拦截权限;当利用所述白名单单元执行权限配置时,即对应传统的白名单模式,该模式中用户需要筛选出受到信任的应用程序加入白名单,并为这一部分应用程序配置休眠拦截权限,其他程序均不配置该权限;
黑名单单元,用于获得用户指定出的不需要配置休眠拦截权限的程序,仅对指定的程序不配置休眠拦截权限,对未指定的程序配置休眠拦截权限;利用所述黑名单单元执行权限配置时,即对应传统的黑名单模式,在这一模式中,用户需要筛选出不被信任的应用程序加入黑名单,仅针对这一部分应用程序不配置休眠拦截权限;对于黑名单以外的应用程序均配置休眠拦截权限。
在实际情况下,所述配置模块可以包含二者之一,也可以同时包含二者;使用过程中,用户可以单独利用黑名单单元或白名单单元进行权限配置,也可以同时应用此二者。
参照图4所示为本发明所述系统的另一个具体实施例。本实施例在图3所示系统实施例的基础上还包括:
空置时间模块,用于预先设置进入休眠时间,判断系统空置时间是否达到进入休眠时间,当达到进入休眠时间则触发锁定模块;
锁定模块,用于在空置时间模块触发之下,判断是否有应用程序执行了锁定操作,生成判断操作结果;
休眠控制模块,用于获取判断操作结果,当判断操作结果中显示任意程序执行了锁定操作,则系统保持唤醒状态;当没有程序执行锁定操作,则系统进入休眠;
循环模块,用于当有程序执行锁定操作使系统保持唤醒状态时,设置一个判断周期时间,每隔判断周期时间重新判断是否有应用程序执行了锁定操作;如果存在则系统保持唤醒状态,直到不存在程序执行锁定操作,则系统进入休眠状态。
本实施例的技术方案在实质上对应图2所示的方法实施例。本实施例存在的有益效果是,基于传统的WakeLock机制下,阻止了一部分程序对于休眠拦截接口的使用;即坚持了WakeLock机制通过控制休眠来促进设备节电,增强电池续航能力的初衷,也避免了休眠拦截接口的滥用。同时通过循环机制的建立,每隔一段时间对重新判断系统中是否有程序执行acquire操作,实现系统中不存在acquire操作时尽快进入休眠。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。