应用的冻结控制方法及装置,存储介质及电子设备与流程

文档序号:20163307发布日期:2020-03-24 21:14阅读:183来源:国知局
应用的冻结控制方法及装置,存储介质及电子设备与流程

本发明涉及通信领域,具体而言,涉及一种应用的冻结控制方法及装置,存储介质及电子设备。



背景技术:

当前终端应用越来越多,应用的功能也越来越丰富和强大。大家应该都有这样的体验,安装的应用越多,即使没有使用,也能感觉到电池消耗越来越快,内存越来越少。这是因为有些应用即使没有使用,也会在后台频繁的占用cpu等系统资源。导致终端的耗电量较大。终端电池能力、内存等硬件资源在丰富多彩的应用面前显得捉襟见肘,从而会影响用户体验。尤其是对于第三方应用,当前所使用的第三方应用中,往往会携带有额外的附加功能。某些第三方应用还会关联其他的应用。这些功能和关联的应用往往会带来额外的耗电。

而目前对应用的管控主要是清理操作,即需要关闭应用之后对应用进行清理之后再打开。此外,另一种比较流行的应用管控方法是通过冻结技术来实现的。然而,现有的基于应用程序包管理服务(packagemanger)的冻结方案,用户在冻结和解冻的过程中有明显的感知,应用冻结的时候会停止,需要使用时解冻后会重新启动,用户体验极差。

因此,无论是通过对应用的清理操作,还是利用冻结技术,都存在由于对应用进行管控之前需要停止应用直到管控完成后重新启动所导致的应用需要反复启动、用户体验差,以及存在数据丢失风险等问题。



技术实现要素:

本发明实施例提供了一种应用的冻结控制方法及装置,存储介质及电子设备,以至少解决相关技术中对用进行管控时存在的应用需要反复启动、用户体验差,以及存在数据丢失风险的问题。

根据本发明的一个实施例,提供了一种应用的冻结控制方法,包括:在应用启动之后,建立所述应用的线程目录,并将所述应用创建的线程添加至所述线程目录;根据所述应用的运行状态,控制所述线程目录中的线程的冻结或解冻。

可选地,建立所述应用的线程目录,并将所述应用创建的线程添加至所述线程目录,包括:基于应用的用户标识建立对应应用的线程目录,其中,所述线程目录至少包括以下记录项:应用所创建的线程,应用所创建的线程标识和所述应用的冻结状态;将所述应用所创建的线程添加至所述线程目录中,并设置所述应用的冻结状态为非冻结。

可选地,根据所述应用的运行状态,控制所述线程目录中的线程的冻结或解冻,包括:当监控到所述应用满足冻结条件时将所述线程目录中的全部线程进行冻结,并设置所述应用的冻结状态为冻结;当监控到所述应用满足解冻条件时,将所述线程目录中的全部线程进行解冻,并设置所述应用的冻结状态为解冻。

可选地,所述冻结条件包括以下至少之一:应用从前台切换至后台、应用所在的终端屏幕熄灭;和/或,所述解冻条件包括以下至少之一:应用从后台切换至前台、应用所在的终端屏幕点亮。可选地,在所述应用的冻结状态为冻结时,所述方法还包括:在内核中其他线程访问所述应用时,对访问所调用的一个或多个目标线程进行解冻,所述应用的冻结状态保持冻结;当所述目标线程的调用完成后,对所述目标线程进行冻结。

可选地,所述方法还包括:在检测到应用停止运行或被删除之后,删除所述线程目录并停止对所述应用进行冻结状态的控制。

可选地,所述方法还包括:在所述终端启动时,创建冻结控制点,并将冻结策略子系统进行挂载,并生成冻结管理目录,以便所述应用启动时,在所述冻结管理目录建立所述应用的所述线程目录。

可选地,当所述应用的冻结状态为冻结时,禁止所述应用所创建的进程使用系统资源。

根据本发明的另一个实施例,提供了一种应用的冻结控制装置,包括:创建模块,用于在应用启动之后,建立所述应用的线程目录,并将所述应用创建的线程添加至所述线程目录;冻结处理模块,用于根据所述应用的运行状态,控制所述线程目录中的线程的冻结或解冻。

可选地,所述创建模块还用于基于应用的用户标识建立对应应用的线程目录,其中,所述线程目录至少包括以下记录项:应用所创建的线程,应用所创建的线程标识和所述应用的冻结状态;将所述应用所创建的线程添加至所述线程目录中,并设置所述应用的冻结状态为非冻结。

可选地,所述冻结控制模块还用于,当监控到所述应用满足冻结条件时将所述线程目录中的全部线程进行冻结,并设置所述应用的冻结状态为冻结;当监控到所述应用满足解冻条件时,将所述线程目录中的全部线程进行解冻,并设置所述应用的冻结状态为解冻。

可选地,所述冻结条件包括以下至少之一:应用从前台切换至后台、应用所在的终端屏幕熄灭;和/或,所述解冻条件包括以下至少之一:应用从后台切换至前台、应用所在的终端屏幕点亮。

可选地,所述冻结控制模块还用于,在内核中其他线程访问所述应用时,对访问所调用的一个或多个目标线程进行解冻,所述应用的冻结状态保持冻结;当所述目标线程的调用完成后,对所述目标线程进行冻结。

可选地,所述冻结控制装置还用于,在检测到应用停止运行或被删除之后,删除所述线程目录并停止对所述应用进行冻结状态的控制。

根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。

通过本发明,由于对应用建立线程目录,同时根据应用的状态,对线程目录中的线程进行冻结控制,因此,不需要对应用进行停止就可以实现对应用的管控。因此,可以解决相关技术中需要停止应用直到管控完成后重新启动所导致的应用需要反复启动、用户体验差,以及存在数据丢失风险等问题,达到对用户影响最小的情况下对应用进行冻结管理,又不影响用户使用、提高用户体验效果。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明实施例的一种应用的冻结控制方法的移动终端的硬件结构框图;

图2是根据本发明实施例的一种应用的冻结控制的流程图;

图3是根据本发明实施例的一种应用的初始化的流程图;

图4是根据本发明实施例的一种应用的线程冻结状态切换的流程图;

图5是根据本发明实施例的一种应用的冻结控制装置的结构框图;

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

实施例1

本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种应用的冻结控制方法的移动终端的硬件结构框图。如图1所示,移动终端10可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,可选地,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的应用的冻结控制方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(networkinterfacecontroller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。

在本实施例中提供了一种运行于上述移动终端或网络架构的一种应用的冻结控制方法,图2是根据本发明实施例的一种应用的冻结控制的流程图,如图2所示,该流程包括如下步骤:

步骤s202,在应用启动之后,建立所述应用的线程目录,并将所述应用创建的线程添加至所述线程目录;

步骤s204,根据所述应用的运行状态,控制所述线程目录中的线程的冻结或解冻。

可选地,在所述终端启动时,创建冻结控制点,并将冻结策略子系统进行挂载,并生成冻结管理目录,以便所述应用启动时,在所述冻结管理目录建立所述应用的所述线程目录。

具体地,在系统开机启动之后,linux内核完成cgourp初始化,同时挂载cgroup的freezer子系统,生成“cpufreezer”目录。

可选地,建立所述应用的线程目录,并将所述应用创建的线程添加至所述线程目录,包括:基于应用的用户标识建立对应应用的线程目录,例如,基于应用的uid(useridentifier),即,安卓应用识别id建立对应的线程目录以对该uid对应的线程进行归类。其中,所述线程目录至少包括以下记录项:应用所创建的线程,应用所创建的线程标识和所述应用的冻结状态;将所述应用所创建的线程添加至所述线程目录中,并设置所述应用的冻结状态为非冻结。

可选地,在检测到应用停止运行或被删除之后,删除所述线程目录并停止对所述应用进行冻结状态的控制。

具体而言,图3是根据本发明实施例的一种应用的初始化的流程图。如图3所示,应用每次启动,系统框架ams服务(以uid为10001的应用为例)在“cpufreezer”目录下创建特有文件夹“uid_10001”。创建后“uid_10001”目录包含3个文件:“cgroup.procs”(记录所有该应用创建的进程id)、“tasks”(记录所有该应用创建的线程)、“freezer.state”(记录当前应用的冻结状态)。之后如果ams服务检测到10001应用创建了新的进程的话,则会将新的进程的所有线程id(tid)写入“uid_10001”目录下的“tasks”文件,这些线程对应的进程id(pid)写入“uid_10001”目录下的“cgroup.procs”文件,并初始化freezer.state为非冻结状态。

而当框架ams服务判断应用停止运行或者用户将该应用删除的情况下,则将“uid_10001”文件夹中的所有文件从“cpufreezer”目录中删除。同时停止对该应用的任何冻结控制。可选地,根据所述应用的运行状态,控制所述线程目录中的线程的冻结或解冻,包括:当监控到所述应用满足冻结条件时将所述线程目录中的全部线程进行冻结,并设置所述应用的冻结状态为冻结;当监控到所述应用满足解冻条件时,将所述线程目录中的全部线程进行解冻,并设置所述应用的冻结状态为解冻。

可选地,当所述应用的冻结状态为冻结时,禁止所述应用所创建的进程使用系统资源。

具体而言,系统资源包括但不限于:cpu资源、sensor、gps、内存等外设资源。同时通过禁止上述资源能够有效的节省功耗,延长电池续航时间。

可选地,所述冻结条件包括以下至少之一:应用从前台切换至后台、应用所在的终端屏幕熄灭;和/或,所述解冻条件包括以下至少之一:应用从后台切换至前台、应用所在的终端屏幕点亮。

具体而言,图4是根据本发明实施例的一种应用的线程冻结状态切换的流程图。如图4所示,以uid为10001的应用为例,当框架ams判断该应用切换为后台不可见或者检测到所述应用位于的终端屏幕熄灭,则配置“cpufreezer”目录下对应的“uid_10001”文件夹中的“freezer.state”为冻结状态;内核检测到state切换为冻结状态,则读取“uid_10001”文件夹中的tasks文件中所有tid,遍历所有该应用的线程,对每个线程调用linux通用冻结函数进行冻结,之后这个应用就无法再使用cpu资源。

当框架ams服务判断用户重新点击将10001应用切换为前台或者应用所在的终端屏幕点亮时,则配置“uid_10001”文件夹中的“freezer.state”为解冻状态,内核获取到state切换为解冻状态,则读取“uid_10001”文件夹中的“tasks”文件中所有tid,遍历所有该应用的线程,对每个线程调用linux通用解冻函数进行解冻,之后这个应用就可以正常使用cpu资源。

可选地,在所述应用的冻结状态为冻结时,所述方法还包括:在内核中其他线程访问所述应用时,对访问所调用的一个或多个目标线程进行解冻,所述应用的冻结状态保持冻结;当所述目标线程的调用完成后,对所述目标线程进行冻结。

具体地,在某些情况下,例如当冻结状态下的应用注册的系统状态监听回调被执行或者外部设备的驱动上报数据时,则需要先识别出该操作的目标线程是该应用下的哪个线程,然后解冻对应线程,该线程即可继续使用系统资源,当该线程的回调执行结束或者外设数据从内核态复制到用户态后,重新将该线程进行冻结。从而应用在冻结时数据不会丢失。

通过上述步骤,解决了相关技术中需要停止应用直到管控完成后重新启动所导致的应用需要反复启动、用户体验差,以及存在数据丢失风险等问题,达到对用户影响最小的情况下对应用进行冻结管理,又不影响用户使用、提高用户体验效果。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

在本实施例中还提供了一种应用的冻结控制装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图5是根据本发明实施例的一种应用的冻结控制装置的结构框图,如图5所示,该装置包括:创建模块52以及冻结处理模块54。

创建模块52,用于在应用启动之后,建立所述应用的线程目录,并将所述应用创建的线程添加至所述线程目录;

冻结处理模块54,用于根据所述应用的运行状态,控制所述线程目录中的线程的冻结或解冻.

可选地,所述创建模块52还用于基于应用的用户标识建立对应应用的线程目录,其中,所述线程目录至少包括以下记录项:应用所创建的线程,应用所创建的线程标识和所述应用的冻结状态;将所述应用所创建的线程添加至所述线程目录中,并设置所述应用的冻结状态为非冻结。

可选地,所述冻结控制模块54还用于,当监控到所述应用满足冻结条件时将所述线程目录中的全部线程进行冻结,并设置所述应用的冻结状态为冻结;当监控到所述应用满足解冻条件时,将所述线程目录中的全部线程进行解冻,并设置所述应用的冻结状态为解冻。

可选地,所述冻结条件包括以下至少之一:应用从前台切换至后台、应用所在的终端屏幕熄灭;和/或,所述解冻条件包括以下至少之一:应用从后台切换至前台、应用所在的终端屏幕点亮。

可选地,所述冻结控制模块还用于,在内核中其他线程访问所述应用时,对访问所调用的一个或多个目标线程进行解冻,所述应用的冻结状态保持冻结;当所述目标线程的调用完成后,对所述目标线程进行冻结。

可选地,所述冻结控制装置还用于,在检测到应用停止运行或被删除之后,删除所述线程目录并停止对所述应用进行冻结状态的控制。

实施例3

本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:

s1,在应用启动之后,建立所述应用的线程目录,并将所述应用创建的线程添加至所述线程目录;

s2,根据所述应用的运行状态,控制所述线程目录中的线程的冻结或解冻。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。

本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:

s1,在应用启动之后,建立所述应用的线程目录,并将所述应用创建的线程添加至所述线程目录;

s2,根据所述应用的运行状态,控制所述线程目录中的线程的冻结或解冻。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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