CN115981830A - 任务管理方法及装置 - Google Patents
任务管理方法及装置 Download PDFInfo
- Publication number
- CN115981830A CN115981830A CN202111195868.8A CN202111195868A CN115981830A CN 115981830 A CN115981830 A CN 115981830A CN 202111195868 A CN202111195868 A CN 202111195868A CN 115981830 A CN115981830 A CN 115981830A
- Authority
- CN
- China
- Prior art keywords
- task
- foreground
- executed
- application
- frozen
- 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.)
- Pending
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
-
- 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
-
- 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]
-
- 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
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephone Function (AREA)
Abstract
本申请实施例提供一种任务管理方法及装置,用于解决相关技术中冻结任务不合理的问题。本申请中并不需要每次接收到前台活动事件都去操作冻结分组,而是在待执行任务启动运行时,基于前台应用的处于活动状态来冻结任务,由此实现按需冻结任务,减少freezer分组子系统对冻结分组的操作带来的资源消耗,实现合理冻结任务。此外,针对诉求低的后台任务,若该任务未启动运行,则该任务也不会添加到冻结分组中。而对于突发任务,其启动运行时才会判决是否将该突发任务添加到冻结分组中。若突发任务不是前台任务,前台也处于活动状态,则该突发任务会被添加到冻结分组中,能够保证及时冻结突发任务,避免突发任务抢占CPU资源。
Description
技术领域
本申请实施例涉及电子设备控制技术领域,尤其涉及一种任务管理方法及装置。
背景技术
终端设备支持启动多个应用,有些应用在前台运行,有些应用在后台运行。在前台运行的应用称之为前台应用,在后台运行的应用称之为后台应用。
Linux提供了一个freezer(冻结)分组子系统,该冻结分组子系统为一个通用的接口、支持对任务进行冻结。例如为了解决前台应用和后台应用竞争资源的问题,可通过freezer分组子系统将后台应用的任务添加到冻结分组中,达到将该分组内的任务进行冻结的目的。由此,通过freezer分组子系统能够限制后台应用对CPU(central processingunit,中央处理器)资源的占用,缓解后台应用抢占CPU资源导致的前台应用卡顿、丢帧等的问题。
然而,相关技术中如何合理冻结任务的以有效的利用CPU资源仍有待解决。
发明内容
本申请实施例提供一种多设备数据协作的方法及装置,用于解决如何合理冻结任务以提高CPU资源的利用率的问题。
第一方面,本申请实施例提供一种任务管理方法,所述方法包括:
待执行任务启动运行时,获取前台应用的状态;
若所述待执行任务为后台任务且所述前台应用处于活动状态,则将所述待执行任务添加到冻结分组子系统的冻结分组中。
通过该方法,并不需要每次接收到前台活动事件都去操作冻结分组,而是在待执行任务启动运行时,基于前台应用的处于活动状态将该待执行任务添加到冻结分组中,由此实现按需冻结任务,减少freezer分组子系统对冻结分组的操作带来的资源消耗,实现合理冻结任务。此外,针对诉求低的后台任务,若该任务未启动运行,则该任务也不会添加到冻结分组中,则freezer分组子系统不会操作该类诉求低的任务,降低freezer分组子系统对冻结分组操作的次数。而对于突发任务,其启动运行时才会判决是否将该突发任务添加到冻结分组中。若突发任务不是前台任务,前台也处于活动状态,则该突发任务会被添加到冻结分组中,能够保证及时冻结突发任务,避免突发任务抢占CPU资源。
在一种可能的设计中,所述方法还包括:
若接收到所述前台应用的第一活动事件,则将前台活动标识标记为活动状态;
若从接收到所述第一活动事件开始,指定时长内未接收到所述前台应用的第二活动事件,则将所述前台活动标识更新为空闲状态;
所述获取前台应用的状态,包括:
读取所述前台活动标识,得到所述前台应用的状态。
通过该方法能够基于前台应用的活动事件来简单且准确的维护前台应用的状态,以便于结合前台应用的状态来确定待执行任务是否被冻结。
在一种可能的设计中,所述方法还包括:
若所述待执行任务为前台任务,则执行所述待执行任务。
通过该方法,能够让前台应用的任务尽快优先执行,保证前台应用的运行效率。
在一种可能的设计中,所述方法还包括:
若所述待执行任务为后台任务、且所述前台应用处于空闲状态,则执行所述待执行任务。
通过该方法虽然待执行任务为后台任务,但前台空闲时,说明前台应用对CPU资源诉求低,可以执行该待执行任务,保证后台任务能够被及时执行。
在一种可能的设计中,所述获取前台应用的状态之后,所述方法还包括:
若所述前台应用处于空闲状态,则将所述冻结分组中的任务移出所述冻结分组;
将移出的任务添加到任务队列中。
通过该方法能够及时的释放冻结分组中的任务,以便于能够及时执行从冻结分组中释放的任务。
在一种可能的设计中,确定所待执行任务是否为后台任务包括:
基于所述待执行任务的进程标识,识别所述待执行任务是否为后台任务。
该方法中通过进程标识,能够简单方便的确定待执行任务是否为后台任务。
在一种可能的设计中,所述待执行任务为周期性执行任务,确定所述待执行任务启动运行,包括:
若到达所述待执行任务的执行时间,确定所述待执行任务启动运行。
基于该方法对于周期性运行的突发任务,能够及时加入到冻结分组中。
在一种可能的设计中,若任意后台应用预先建立了多个子线程任务,则将所述多个子线程任务中启动运行的子线程任务作为所述待执行任务。
由此,当后台应用具有多个子线程任务时,未被启动运行的子线程任务,即对CPU资源诉求低的子线程任务将不会添加到冻结分组中。
在一种可能的设计中,所述第一活动事件包括所述前台应用的启动事件、基于所述前台应用的操作界面触发的界面操作事件。由此,启动事件和界面操作事件均可以用于维护前台应用处于活动状态。
在一种可能的设计中,所述将移出的任务添加到任务队列中之后,所述方法还包括:
针对任一从所述冻结分组中移出并重新添加到所述任务队列中的解冻任务,若所述解冻任务启动运行且所述前台应用处于空闲状态,则执行所述解冻任务。
由此,从冻结分组中解冻的解冻任务能够被尽可能的在前台空闲时被执行到。
第二方面,本申请实施例还提供一种任务管理装置,所述装置包括:
前台状态获取模块,用于待执行任务启动运行时,获取前台应用的状态;
冻结模块,用于若所述待执行任务为后台任务且所述前台应用处于活动状态,则将所述待执行任务添加到冻结分组子系统的冻结分组中。
在一种可能的设计中,所述装置还包括:
活动维护模块,用于若接收到所述前台应用的第一活动事件,则将前台活动标识标记为活动状态;若从接收到所述第一活动事件开始,指定时长内未接收到所述前台应用的第二活动事件,则将所述前台活动标识更新为空闲状态;
所述前台状态获取模块,具体用于:
读取所述前台活动标识,得到所述前台应用的状态。
在一种可能的设计中,所述装置还包括:
第一执行模块,用于若所述待执行任务为前台任务,则执行所述待执行任务。
在一种可能的设计中,所述装置还包括:
第二执行模块,用于若所述待执行任务为后台任务、且所述前台应用处于空闲状态,则执行所述待执行任务。
在一种可能的设计中,所述获取前台应用的状态之后,所述装置还包括:
解冻模块,用于若所述前台应用处于空闲状态,则将所述冻结分组中的任务移出所述冻结分组;将移出的任务添加到任务队列中。
在一种可能的设计中,所述冻结模块还用于基于以下方法确定所述待执行任务是否为后台任务:
基于所述待执行任务的进程标识,识别所述待执行任务是否为后台任务。
在一种可能的设计中,所述待执行任务为周期性执行任务,所述装置还包括:
启动运行确定模块,用于基于以下方法确定所述待执行任务启动运行:
若到达所述待执行任务的执行时间,确定所述待执行任务启动运行。
在一种可能的设计中,若任意后台应用预先建立了多个子线程任务,则将所述多个子线程任务中启动运行的子线程任务作为所述待执行任务。
在一种可能的设计中,所述第一活动事件包括所述前台应用的启动事件、基于所述前台应用的操作界面触发的界面操作事件。
在一种可能的设计中,所述将移出的任务添加到任务队列中之后,所述装置还包括:
第三执行模块,用于针对任一从所述冻结分组中移出并重新添加到所述任务队列中的解冻任务,若所述解冻任务启动运行且所述前台应用处于空闲状态,则执行所述解冻任务。
第三方面,本申请实施例还提供了一种终端设备,包括:一个或多个处理器;一个或多个存储器;所述一个或多个存储器,用于存储一个或多个计算机程序以及数据信息;其中所述一个或多个计算机程序包括指令;当所述指令被所述一个或多个处理器执行时,使得所述终端设备执行如上述第一方面中任一项所述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读介质存储有计算机程序(也可以称为代码,或指令)当其在计算机上运行时,使得计算机执行上述第一方面中任一种可能实现方式中的方法。
第五方面,本申请实施例提供了一种计算机程序产品,计算机程序产品包括:计算机程序(也可以称为代码,或指令),当计算机程序被运行时,使得计算机执行上述第一方面中任一种可能实现方式中的方法。
第六方面,本申请实施例还提供一种终端设备上的图形用户界面,该终端设备具有显示屏、一个或多个存储器、以及一个或多个处理器,所述一个或多个处理器用于执行存储在所述一个或多个存储器中的一个或多个计算机程序,所述图形用户界面包括所述终端设备执行本申请实施例第一方面任一可能的实现方式时显示的图形用户界面。
上述第二方面至第六方面中任一方面的有益效果请具体参阅上述第一方面中各种可能的设计的有益效果,在此不再赘述。
附图说明
图1为本申请实施例提供的一种终端设备的硬件结构示意图;
图2为本申请实施例提供的一种安卓操作系统结构示意图;
图3为相关技术中应用框架层和内核层的结构框图;
图4为相关技术中会导致突发任务运行的示意图;
图5为本申请实施例提供的应用框架层和内核层的结构框图;
图6为本申请实施例提供的任务管理方法的流程示意图;
图7为本申请实施例提供的任务管理方法的执行情况说明示意图之一;
图8为本申请实施例提供的任务管理方法的执行情况说明示意图之二;
图9为本申请实施例提供的任务管理方法的执行情况说明示意图之三;
图10为本申请实施例提供的任务管理方法的执行情况说明示意图之四;
图11为本申请实施例提供的任务管理方法的执行情况说明示意图之五;
图12为本申请实施例提供的任务管理装置的结构示意图;
图13为本申请实施例提供的终端设备的另一硬件结构示意图。
具体实施方式
本申请的说明书以及附图中的术语“第一”和“第二”等是用于区别不同的对象,或者用于区别对同一对象的不同处理,而不是用于描述对象的特定顺序。此外,本申请的描述中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请实施例提供的任务管理方法可以应用于诸如手机、平板电脑、可穿戴设备(例如,手表、手环、头盔、耳机等)、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personalcomputer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)、智能家居设备(例如,智能电视,智能音箱,智能摄像头等)、膝上型计算机(Laptop)等电子设备。可以理解的是,本申请实施例对电子设备的具体类型不作任何限制。
本申请实施例的电子设备的示例性实施例包括但不限于搭载 鸿蒙或者其它操作系统的便携式电子设备。应当理解的是,在本申请其他一些实施例中,电子设备也可以不是便携式电子设备,而是具有触敏表面(例如触控面板)的台式计算机。可理解为配置Linux内核的设备均适用于本申请实施例。
请参考图1,对本申请实施例提供的终端设备100进行介绍。其中,本领域技术人员可以理解,图1所示的终端设备100仅仅是一个范例,并不构成对终端设备100的限定,并且终端设备100可以具有比图中所示出的更多的或者更少的部件,可以组合两个或更多的部件,或者可以具有不同的部件配置。图1中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
下面以图1所示场景中的手机为例,介绍终端设备的结构。
如图1所示,手机100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。其中,控制器可以是手机100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为手机100充电,也可以用于手机100与外围设备之间传输数据。充电管理模块140用于从充电器接收充电输入。电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。
手机100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。天线1和天线2用于发射和接收电磁波信号。手机100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在手机100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
无线通信模块160可以提供应用在手机100上的包括无线局域网(wireless localarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。示例性的,在本申请实施例中,不同的终端设备之间可通过BT或WLAN建立通信连接。
在一些实施例中,手机100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得手机100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code divisionmultiple access,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),第五代(the fifth generation,5G)移动通信系统,未来通信系统,如第六代(6th generation,6G)系统等,BT,GNSS,WLAN,NFC,FM和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
显示屏194用于显示应用的显示界面等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,AMOLED),柔性发光二极管(flex light-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dotlight emitting diodes,QLED)等。在一些实施例中,手机100可以包括1个或N个显示屏194,N为大于1的正整数。在本申请实施例中,显示屏194可用于显示应用界面。
摄像头193用于捕获静态图像或视频。摄像头193可以包括前置摄像头和后置摄像头。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行手机100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,以及至少一个应用程序(例如爱奇艺应用,微信应用等)的软件代码等。存储数据区可存储手机100使用过程中所产生的数据(例如图像、视频等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展手机100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将图片,视频等文件保存在外部存储卡中。
手机100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。手机100可以接收按键输入,产生与手机100的用户设置以及功能控制有关的键信号输入。马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和手机100的接触和分离。
可以理解的是,图2所示的部件并不构成对手机的具体限定,手机还可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。以下的实施例中,以图2所示的手机100为例进行介绍。
终端设备的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的Android系统为例,示例性说明终端设备的软件结构。图2是本发明实施例的终端设备的软件结构框图。示例性的,图2是一种可以运行在上述终端设备中的软件架构示意图。分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。如图2所示,该软件架构可以分为五层,分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)、系统库和Linux内核层。
应用程序层是操作系统的最上一层,包括操作系统的原生应用程序,例如相机、引用、图库、地图、导航、WLAN,电子邮件客户端、信息、通话、日历、浏览器等。本申请实施例涉及的APP,简称应用,为能够实现某项或多项特定功能的软件程序。通常,终端设备中可以安装多个应用。比如,相机应用、邮箱应用、智能家居控制应用等。下文中提到的应用,可以是终端设备出厂时已安装的系统应用,也可以是用户在使用终端设备的过程中从网络下载或从其他终端设备获取的第三方应用。当然,对于开发者来说,开发者可以编写应用程序并安装到该层。
一种可能的实现方式中,应用程序可以使用Java语言开发,通过调用应用程序框架层所提供的应用程序编程接口(application programming interface,API)来完成,开发者可以通过应用程序框架来与操作系统的底层(例如硬件抽象层、内核层等)进行交互,开发自己的应用程序。该应用程序框架层主要是操作系统的一系列的服务和管理系统。
如图2所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供手机100的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,通信终端振动,指示灯闪烁等。
本申请实施例中,应用程序框架层还可以包含前台活动事件采集服务、前台空闲事件采集服务。前台活动事件采集服务用于采集前台应用的活动事件。例如,启动应用、点击按钮、滑动操作等这些前台活动事件均可以被采集到。前台空闲事件采集服务用于采集前台应用的空闲事件。前台活动事件采集服务和前台空闲事件采集服务将相应的采集结果上报给Linux内核层处理。
安卓运行时包括核心库和虚拟机。安卓运行时负责安卓系统的调度和管理。安卓系统的核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓系统的核心库。
应用程序层和应用程序框架层运行在虚拟机中。以java举例,虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器,媒体库,三维图形处理库(例如:OpenGL ES),二维图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了二维和三维图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成和图层处理等。
二维图形引擎是二维绘图的绘图引擎。
Linux内核(Linux Kernel)层提供操作系统的核心系统服务,如安全性、内存管理、进程管理、网络协议栈和驱动模型等都基于Linux内核。该层有许多与终端设备相关的驱动程序,主要的驱动有:显示驱动、摄像头驱动、音频驱动、传感器驱动等。当然,还可以包括基于Linux的帧缓冲驱动、作为输入设备的键盘驱动、基于内存技术设备的Flash驱动、蓝牙驱动、WI-FI驱动等。
在本申请一些实施例中,Linux内核配置有冻结子系统,用于对后台任务进行冻结。
以下实施例中所涉及的技术方案均可以在具有上述硬件架构和软件架构的终端设备中实现。
为了使得本申请更加的清楚,首先对本申请提到的部分概念作简单介绍。
(1)前台应用,运行在前台的应用程序,在本申请实施例的描述中,前台应用指的是在前台运行、有用户界面、用户可见、可感知的应用。前台应用可以有一个或多个,多个前台应用的显示界面可以是并排的,如同一屏幕中不同区域展示各自的前台应用的用户界面,在例如多屏幕的电子设备中每个屏幕展示各自的前台应用界面。当然,多前台应用时,前台应用的显示界面也可以是层叠的,如同一屏幕层叠的展示多个前台应用的界面。
(2)后台应用,即运行在后台的应用。
(3)前台任务(Forgrounding),即前台应用的任务称之为前台任务。在一些实施例中,前台任务是指Android在前台处理那些经常会被用户关注的后台Service,这些Service的特点是:内存过低时它不会自动成为被杀死的对象。前台任务必须向用户提供一个通知,而且只有在后台服务被终止或从前台任务中被移除之后,此通知才能消失。例如,用后台服务来播放音乐的播放器就应该将其作为前台任务来处理,因为这能让用户通过前台通知(Notification)清楚地知晓后台服务的运行情况。在前台任务中,通知可能会标明当前正在播放的歌曲,并允许用户启动一个activity来与播放器进行交互。
(4)后台任务(Backgrounding),即后台应用的任务称之为后台任务。在一些实施例中,Android在后台处理的Backgrounding实际上是前台应用程序和后台服务(Service)之间一种折中的解决办法,换言之,通过Backgrounding可以让设备资源不会消耗太快同时又能尽量响应前台的请求。从功能上来说,Android应用程序中的Backgrounding非常类似于桌面应用程序的多任务,但它和桌面应用的多任务并不是一个概念。桌面计算机一般都有应用程序可用的多种资源,如大屏幕、电源、内存、各种外存等,因此这些应用程序可以一个接一个地排列显示在屏幕上同时运行,而且都能保持高性能。但是,移动应用程序的资源极其有限,很难在那么小的屏幕上同时显示多个高速运行的应用程序,因为手机电池的电量很快就会耗尽。
(5)前台活动事件,用户对前台应用的操作产生的事件,例如启动应用、点击应用中的触摸控件等都会产生前台活动事件。前台活动事件中可包括应用标识和事件类型,事件类型例如点击事件、滑动事件。
(6)前台空闲事件,一段时间内没有产生前台活动事件则认为前台空闲,此时可生成用于表示前台空闲的前提空闲事件。例如一个前提应用时、用户停留在前台应用的某个界面没有进一步的操作可理解为前台空闲,产生前台空闲事件。再例如,多个前台应用在一段时间内均未产生前台活动事件,则认为前台空闲。前台空闲事件中可包括处于空闲状态的前台应用的应用标识。
(7)冻结分组子系统,冻结分组子系统是一个通用接口,可用于批量启动/停止任务。当需要冻结时,把相关的任务添加到冻结分组中,即可达到冻结任务的效果。任务被冻结后该任务不会被执行、不会占用CPU资源;当需要结束冻结时,从冻结分组中移除相关任务即可。
相关技术中,在使用冻结分组子系统时,终端设备内部软件架构中应用框架层和内核层的处理方式如图3所示。应用框架层中设置事件采集模块和管控中心模块,内核中部署冻结分组子系统。
事件采集模块用于采集前台活动事件,例如启动应用、触控操作等作为前台活动事件。然后,事件采集模块将前台活动事件上报给管控中心模块。管控中心模块基于前台活动事件开始查询任务队列,从任务队列中筛选出后台任务得到冻结任务列表,然后由管控中心将冻结任务列表下发给内核中的冻结分组子系统。
冻结分组子系统将该后台任务列表添加到冻结分组中,freezer分组子系统对加入冻结分组的任务进行检查,获取任务是否运行状态,并将运行状态的任务设置为停止状态,如果任务已运行,会停止调度。
然而,当前台活动频繁时,会频繁产生前台活动事件,导致管控中心模块频繁的进行查询操作得到冻结任务列表,每次得到的冻结任务列表都需要更新到冻结分组中,由此每次的前台活动事件都会操作冻结分组。
此外,相关技术中将所有后台任务都添加到冻结分组中。然而,有些后台任务不需要马上执行,故此该类后台任务对CPU诉求低,并不需要频繁加入到冻结分组中,而且这类任务添加到冻结分组中也会增加freezer分组子系统的负担,例如频繁的加入冻结分组,则需要freezer分组子系统不断的对加入冻结分组的任务进行检查并设置停止状态。然而,如果后台任务并不运行,对这类任务而言,freezer分组子系统执行添加到冻结分组、检查任务并设置停止状态等这个过程的一系列操作是不必要的。
还有,相关技术中前台活动事件和后台的突发任务并发时,也容易导致后台的突发任务冻结不及时。例如图4所示,管控中心模块在t1时刻接收到前台活动事件,然后查询后台的任务队列并在t2时刻将冻结任务列表下发给内核进行冻结。然而,在t1时刻,同时到达了周期性的突发任务的执行时间,该突发任务生成后在t3时刻添加到任务队列中。而在该突发任务添加到任务队列之前,由于任务队列中没有该突发任务,管控中心模块则因为查询不到该突发任务导致下发给冻结子系统的冻结任务列表中不包含突发任务,由此导致该突发任务冻结不及时,只能等到下一次前台活动事件才能冻结该突发任务。
综上可见,相关技术中对任务的冻结方式有些不合理,对任务的冻结效率低下,有鉴于此,本申请实施例提供一种任务管理方法和电子设备,用于提高对任务的冻结效率,实现合理的冻结任务,提高CPU资源的利用率。
为了便于理解,本申请实施例以手机为例,对本申请实施例提供的任务管理方法进行具体介绍。如图5所示:
本申请实施例中在应用框架层设置前台活动事件采集服务和前台空闲事件采集服务。
前台活动事件采集服务用于采集前台活动事件,多前台应用时,任一前台应用的活动事件都会被采集到,并在采集到前台活动事件后,将该前台活动事件上报给内核层。
前台空闲事件采集服务,用于在前台应用空闲时(如有多个前台应用,则在这多个前台应用均空闲时),上报前台应用空闲事件给内核层。可实施为,从最后一次采集到或上报前台活动事件开始,若指定时长例如n秒内没有再次采集到前台活动事件,则应用框架层生成前台空闲事件上报给内核层。
内核层,设置有前台活动标识用于记录前台应用的状态。例如,当接收到前台活动事件时,将该前台活动标识设置为活动状态,当接收到前台空闲事件时,将该前台活动标识设置为空闲状态。可实施为1表示活动状态,0表示空闲状态。
内核层维护有任务队列,该队列中有多个任务,包括前台任务和/或后台任务。如内核层中由CFS(Completely Fair Scheduler,完全公平调度算法)调度器维护的RQ(runqueue,启动运行队列)。为了有效的提升任务的冻结效率,本申请实施例中内核层中配置有冻结决策,该冻结决策可分情况来合理冻结任务。如图6所示,本申请实施例提供的任务管理方法可实施为:
在步骤601中,待执行任务启动运行时,从任务队列中获取待执行任务。
该待执行任务是要启动运行的任务。例如任务队列中包含多个任务,多个任务之间可能具有依赖关系也可能没有依赖关系,该依赖关系用于说明哪些任务需要依赖其他任务的运行结果。例如,任务B执行完才能执行任务A,则任务A依赖任务B执行。
实施时,可以扫描任务队列来确定哪些任务能够启动运行。例如,任务A所依赖的任务都执行完毕,则任务A可执行,则从任务队列中获取任务A并启动运行该任务A。当任务队列中有多个任务都可以执行时,可以根据任务优先级确定要启动运行哪个任务。
要启动运行的待执行任务可能是前台任务也可能是后台任务,当然也可能是后台应用的突发任务。突发任务的一种产生方式例如是,当到达周期性任务的执行时间时,会产生突发任务加入到任务队列中。再例如,后台应用收到广播事件而执行的业务。如,终端设备1的蓝牙应用收到终端设备2的广播后,蓝牙应用对终端设备2进行扫描等操作可以为突发任务。
在步骤602中,读取前台活动标识,得到前台应用的状态。
在步骤603中,基于冻结策略执行如下操作:
首先,识别待执行任务是否为前台应用的任务。一种可能的实施方式为,每个应用对应有进程标识,任务队列中每个任务也有其对应的进程标识,故此,通过任务的进程标识可识别每个任务是否为前台任务。
在识别待执行任务是否为前台任务之后,可分情况决策出待执行任务是否需要冻结,例如可包括以下几种示例性的情况:
情况1)、若待执行任务为前台任务,则不冻结该待执行任务,也即需要执行该待执行任务;由此,当待执行任务恰好为前台任务时,无论前台应用是处于空闲状态还是活动状态,都可以正常进行CPU调度以便于执行该任务。
情况2)、若待执行任务为后台任务,且前台应用处于空闲状态,则不冻结该待执行任务。此种情况下,需要执行该待执行任务。
也即,虽然待执行任务为后台任务,但前台空闲时,说明前台应用对CPU资源诉求低,可以执行该待执行任务,保证后台任务能够被及时执行。
情况3)、若待执行任务为后台任务,但前台应用处于活动状态时,则将待执行任务下发到冻结分组中,以冻结待执行任务,尽可能避免后台任务抢占CPU资源导致前台应用卡顿、丢帧等的问题。
由此可见,本申请实施例中,并不需要每次接收到前台活动事件都去操作冻结分组。在本申请实施例中前台活动事件用于维护前台应用的状态是空闲状态还是活动状态。在待执行任务启动运行时,才会基于该待执行任务是否为前台任务并结合前台应用的状态来综合确定是否将该待执行任务添加到冻结分组中,由此实现按需冻结任务,减少freezer分组子系统对冻结分组操作的次数。
针对诉求低的后台任务,若该任务未启动运行,则该任务也不会添加到冻结分组中,则freezer分组子系统不会操作该类诉求低的任务,降低freezer分组子系统对冻结分组操作的次数。
而对于突发任务,其启动运行时才会判决是否将该突发任务添加到冻结分组中。若突发任务不是前台任务,前台也处于活动状态,则该突发任务会被添加到冻结分组中,能够保证及时冻结突发任务,避免突发任务抢占CPU资源。
此外,本申请实施例中,当前台应用处于空闲状态时,还可以将后台任务从冻结分组中解冻,并将解冻后的后台任务重新添加到任务队列中,以便于对后台任务进行CPU调度。
为便于进一步理解本申请实施例提供的任务管理方法,下面分几种场景对此进行说明。
场景1)应用1一直为前台应用的情形
假设用户启动了应用1、应用2和应用3,应用1为前台应用,应用2和应用3为后台应用。假设最后一次上报前台活动事件开始,若n秒内没有采集到前台活动事件,则前台应用进入空闲状态。其中,n秒可以根据CPU的能力来确定,CPU能力越高,其n秒的值可以越低。
如图7所示,假设用户在t1时刻点击了应用1的控件1,此时应用框架层会上报针对控件1的前台活动事件给内核层,内核层基于该前台活动事件将前台活动标识M标记为活动状态,如图7所示,M的表达形式为M(APP1,1),其中APP1表示应用1、APP1之后的1表示活动状态。
用户操作控件1之后,在n秒内(如t1-t3时间段内)若没有收到上报的前台活动事件或前台空闲事件,则前台活动标识不会变化,继续表示应用1处于活动状态。在应用1处于活动状态的(t1-t3)这段时间内,若后台没有任务启动运行,则没有后台任务添加到冻结分组。若在应用1处于活动状态的这段时间内,在t2时刻应用2的任务1需要启动运行,则基于应用2的任务1的进程标识,可知应用2的任务1为后台任务,并且读取前台活动标识可知前台应用1处于活动状态,则将应用2的任务1添加到冻结分组中进行冻结。
如图7所示,用户操作控件1之后,紧接着在t3时刻点击了控件2,此时应用框架层上报针对控件2的前台活动事件给内核层。内核层查看前台活动标识为活动状态,对其不作修改,或者内核层对前台活动标识进行写操作,将其标记为活动状态。在应用1处于活动状态的(t3-t4)这段时间内,若后台没有任务启动运行,则没有后台任务添加到冻结分组。如图7所示,在t3时刻若任务队列中应用3的任务2要启动运行,则由于应用3的任务2为后台任务,且前台活动标识为活动状态,则将应用3的任务2添加到冻结分组中进行冻结。
进一步的,如图7所示,假设在t4时刻用户紧接着操作了应用1的控件3,此时应用框架层上报针对控件3的前台活动事件给内核。内核层查看前台活动标识为活动状态,对其不作修改,或者内核层对前台活动标识进行写操作,将其标记为活动状态。在t4+n秒这段时间内任务队列中没有要启动运行的任务,则这段时间内没有任务添加到冻结分组中。
由此可见,当应用1一直为前台应用时,如果前台应用不空闲,后台应用的任务会在启动运行时,添加到任务队列中。而后台没有任务启动运行,则不会添加到冻结分组中冻结。
场景2)前台应用由应用1切换到应用2的情形
如图8所示,假设用户在t1时刻先点击了应用1的应用图标,启动了应用1,由应用1创建了任务1和任务2。在t1时刻应用框架层针对点击应用1的图标这一操作上报前台活动事件给内核层。内核层基于该前台活动事件设置前台活动标识为活动状态。在t2时刻,任务队列中应用1的任务1启动。基于应用1的任务1为前台任务,则进行CPU调度执行应用1的任务1。
而后,在t3时刻用户点击了应用2的应用图标启动了应用2,应用框架层针对点击应用2的图标这一操作上报前台活动事件给内核层。内核层基于该前台活动事件对前台活动标识进行写操作,将其值设置为应用2的活动状态。在前台应用2处于活动状态这段时间内,任务队列中应用1的任务2启动,则由于应用1的任务2为后台任务,且前台应用2处于活动状态,应用1的任务2添加到冻结分组中进行冻结。
随后,用户点击了应用2的控件1(图8中未示出),则应用框架层将控件1的点击事件上报给内核层。内核层维持前台活动标识为应用2处于活动状态。应用2处于活动状态这段时间内,在t4时刻应用2的任务3启动。由于应用2的任务3为前台任务则执行应用2的任务3。
之后,用户停留在应用2的界面中没有任何用户操作,该状态保持了n秒,相应的应用框架层检测到距最后一次前台活动事件的上报时间已超过n秒(如图9所示到达t5时刻),则上报前台空闲事件给内核层。内核层重置前台活动标识为空闲状态。如图9所示前台活动标识更新为M(APP2,0),其中0表示前台应用空闲。内核层读取到前台活动标识为空闲状态后,则将冻结分组中的任务2解冻并恢复到任务队列中,以保证冻结的任务能够在前台空闲时得以执行,提高处理资源的利用率。
前台应用处于空闲状态这段时间内,在t6时刻解冻出的应用1的任务2启动同时启动应用1的任务5,虽然任务2和任务5为后台任务,但前台应用2处于空闲状态,故此,应用1的任务2和任务5可进行CPU调度以启动运行任务2和任务5。
场景3)突发任务及时冻结和解冻的情形
假设用户先启动了应用2,且应用2启动后创建了每间隔T时长执行一次的任务1。而后,用户启动了应用1,则前台应用由应用2切换到应用1。应用2的任务由前台任务转换为后台任务。
如图10所示,在t1时刻用户点击了应用1的控件1,应用框架层上报针对应用1的控件1的前台活动事件给内核层。内核层基于该前台活动事件设置前台活动标识为活动状态。同时,在t1时刻到达应用2的任务1的执行周期时间,任务1添加到任务队列中。在t2时刻入队后从任务队列中获取应用2的任务1启动运行,由于应用2的任务1为后台任务,且读取前台活动标识确定处于活动状态,故此,该周期性突发的任务1被添加到冻结分组中被冻结。
之后,如图10所示,从t1时刻开始n秒内没有采集到前台活动事件,则在t3时刻应用框架层上报前台空闲事件给内核层。内核层基于该前台空闲事件配置前台活动标识为空闲状态。然后,内核层读取前台活动标识发现前台应用1处于空闲状态,则将冻结分组中的所有任务解冻到任务队列中。由此,应用2的任务1恢复到任务队列中,启动运行任务1时,由于前台活动标识为空闲状态,则执行该应用2的任务1。
场景4)诉求低的子任务不被冻结的情形
例如,在t1时刻应用1启动后创建了m个子线程,每个子线程的任务都添加到任务队列中。如图11所示,任务队列中包括应用1的子线程任务m1、m2…mm。其中,任务m2…mm对CPU诉求低,很少被执行。
而后如图11所示,在t2时刻用户启动了应用2,应用1的子线程任务m1、m2…mm转变为后台任务。同时,前台活动标识修改为应用2处于活动状态。在t3时刻,应用1的主线程触发调用子线程任务m1,由于子线程任务m1为后台任务,由此将子线程任务m1添加到冻结分组。由于子线程任务m2…mm由于未启动运行不会被添加到冻结分组中。
基于相同的发明构思,本申请实施例还提供一种任务管理装置,如图12所示,所述装置包括:
前台状态获取模块1201,用于待执行任务启动运行时,获取前台应用的状态;
冻结模块1202,用于若所述待执行任务为后台任务且所述前台应用处于活动状态,则将所述待执行任务添加到冻结分组子系统的冻结分组中。
在一种可能的设计中,所述装置还包括:
活动维护模块,用于若接收到所述前台应用的第一活动事件,则将前台活动标识标记为活动状态;若从接收到所述第一活动事件开始,指定时长内未接收到所述前台应用的第二活动事件,则将所述前台活动标识更新为空闲状态;
所述前台状态获取模块,具体用于:
读取所述前台活动标识,得到所述前台应用的状态。
在一种可能的设计中,所述装置还包括:
第一执行模块,用于若所述待执行任务为前台任务,则执行所述待执行任务。
在一种可能的设计中,所述装置还包括:
第二执行模块,用于若所述待执行任务为后台任务、且所述前台应用处于空闲状态,则执行所述待执行任务。
在一种可能的设计中,所述获取前台应用的状态之后,所述装置还包括:
解冻模块,用于若所述前台应用处于空闲状态,则将所述冻结分组中的任务移出所述冻结分组;将移出的任务添加到任务队列中。
在一种可能的设计中,所述冻结模块还用于基于以下方法确定所述待执行任务是否为后台任务:
基于所述待执行任务的进程标识,识别所述待执行任务是否为后台任务。
在一种可能的设计中,所述待执行任务为周期性执行任务,所述装置还包括:
启动运行确定模块,用于基于以下方法确定所述待执行任务启动运行:
若到达所述待执行任务的执行时间,确定所述待执行任务启动运行。
在一种可能的设计中,若任意后台应用预先建立了多个子线程任务,则将所述多个子线程任务中启动运行的子线程任务作为所述待执行任务。
在一种可能的设计中,所述第一活动事件包括所述前台应用的启动事件、基于所述前台应用的操作界面触发的界面操作事件。
在一种可能的设计中,所述将移出的任务添加到任务队列中之后,所述装置还包括:
第三执行模块,用于针对任一从所述冻结分组中移出并重新添加到所述任务队列中的解冻任务,若所述解冻任务启动运行且所述前台应用处于空闲状态,则执行所述解冻任务。
基于相同的技术构思,图13所示为本申请实施例提供的一种终端设备。该终端设备可以为图1示出的终端设备。该终端设备包括一个或多个处理器1301;一个或多个存储器1302;通信接口1303,以及一个或多个计算机程序1304,上述各器件可以通过一个或多个通信总线1305连接。通信接口1303用于实现与其他设备(比如若终端设备1300为第一终端设备,其他设备可以为第二终端设备)的通信,比如通信接口可以是收发器。其中该一个或多个计算机程序1304被存储在上述存储器1302中并被配置为被该一个或多个处理器1301执行,该一个或多个计算机程序1304包括指令,上述指令可以用于执行如下步骤,包括:
待执行任务启动运行时,获取前台应用的状态;
若所述待执行任务为后台任务且所述前台应用处于活动状态,则将所述待执行任务添加到冻结分组子系统的冻结分组中。
在一种可能的设计中,所述方法还包括:
若接收到所述前台应用的第一活动事件,则将前台活动标识标记为活动状态;
若从接收到所述第一活动事件开始,指定时长内未接收到所述前台应用的第二活动事件,则将所述前台活动标识更新为空闲状态;
所述获取前台应用的状态,包括:
读取所述前台活动标识,得到所述前台应用的状态。
在一种可能的设计中,所述方法还包括:
若所述待执行任务为前台任务,则执行所述待执行任务。
在一种可能的设计中,所述方法还包括:
若所述待执行任务为后台任务、且所述前台应用处于空闲状态,则执行所述待执行任务。
在一种可能的设计中,所述获取前台应用的状态之后,所述方法还包括:
若所述前台应用处于空闲状态,则将所述冻结分组中的任务移出所述冻结分组;
将移出的任务添加到任务队列中。
在一种可能的设计中,确定所述待执行任务是否为后台任务包括:
基于所述待执行任务的进程标识,识别所述待执行任务是否为后台任务。
在一种可能的设计中,所述待执行任务为周期性执行任务,确定所述待执行任务启动运行,包括:
若到达所述待执行任务的执行时间,确定所述待执行任务启动运行。
在一种可能的设计中,若任意后台应用预先建立了多个子线程任务,则将所述多个子线程任务中启动运行的子线程任务作为所述待执行任务。
在一种可能的设计中,所述第一活动事件包括所述前台应用的启动事件、基于所述前台应用的操作界面触发的界面操作事件。
在一种可能的设计中,所述将移出的任务添加到任务队列中之后,所述方法还包括:
针对任一从所述冻结分组中移出并重新添加到所述任务队列中的解冻任务,若所述解冻任务启动运行且所述前台应用处于空闲状态,则执行所述解冻任务。
可选的,处理器1301除了实现上述所示的方法实施例的,还可以实现其他功能。
应注意,本申请实施例中的处理器可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
可以理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机执行时实现上述所示的任一方法实施例的任务管理方法。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品被计算机执行时实现上述所示的任一方法实施例的任务管理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriberline,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(digital video disc,DVD))、或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此,任何在本申请实施例揭露的技术范围内的变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种任务管理方法,其特征在于,所述方法包括:
待执行任务启动运行时,获取前台应用的状态;
若所述待执行任务为后台任务且所述前台应用处于活动状态,则将所述待执行任务添加到冻结分组子系统的冻结分组中。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若接收到所述前台应用的第一活动事件,则将前台活动标识标记为活动状态;
若从接收到所述第一活动事件开始,指定时长内未接收到所述前台应用的第二活动事件,则将所述前台活动标识更新为空闲状态;
所述获取前台应用的状态,包括:
读取所述前台活动标识,得到所述前台应用的状态。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
若所述待执行任务为前台任务,则执行所述待执行任务。
4.根据权利要求1-3中任一所述的方法,其特征在于,所述方法还包括:
若所述待执行任务为后台任务、且所述前台应用处于空闲状态,则执行所述待执行任务。
5.根据权利要求1-4中任一所述的方法,其特征在于,所述获取前台应用的状态之后,所述方法还包括:
若所述前台应用处于空闲状态,则将所述冻结分组中的任务移出所述冻结分组;
将移出的任务添加到任务队列中。
6.根据权利要求1-5中任一所述的方法,其特征在于,确定所述待执行任务是否为后台任务,包括:
基于所述待执行任务的进程标识,识别所述待执行任务是否为后台任务。
7.根据权利要求1所述的方法,其特征在于,所述待执行任务为周期性执行任务,确定所述待执行任务启动运行,包括:
若到达所述待执行任务的执行时间,确定所述待执行任务启动运行。
8.根据权利要求1所述的方法,其特征在于,若任意后台应用预先建立了多个子线程任务,则将所述多个子线程任务中启动运行的子线程任务作为所述待执行任务。
9.根据权利要求2所述的方法,其特征在于,所述第一活动事件包括所述前台应用的启动事件、基于所述前台应用的操作界面触发的界面操作事件。
10.根据权利要求5所述的方法,其特征在于,所述将移出的任务添加到任务队列中之后,所述方法还包括:
针对任一从所述冻结分组中移出并重新添加到所述任务队列中的解冻任务,若所述解冻任务启动运行且所述前台应用处于空闲状态,则执行所述解冻任务。
11.一种任务管理装置,其特征在于,所述装置包括:
前台状态获取模块,用于待执行任务启动运行时,获取前台应用的状态;
冻结模块,用于若所述待执行任务为后台任务且所述前台应用处于活动状态,则将所述待执行任务添加到冻结分组子系统的冻结分组中。
12.一种终端设备,其特征在于,包括:一个或多个处理器;一个或多个存储器;
所述一个或多个存储器,用于存储一个或多个计算机程序以及数据信息;其中所述一个或多个计算机程序包括指令;
当所述指令被所述一个或多个处理器执行时,使得所述终端设备执行如权利要求1至10中任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,包括计算机程序或指令,当所述计算机程序或指令在计算机上运行时,使得如权利要求1至10中任一项所述的方法被执行。
14.一种计算机程序产品,其特征在于,包括计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如上述权利要求1至10中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111195868.8A CN115981830A (zh) | 2021-10-14 | 2021-10-14 | 任务管理方法及装置 |
PCT/CN2022/111354 WO2023061014A1 (zh) | 2021-10-14 | 2022-08-10 | 任务管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111195868.8A CN115981830A (zh) | 2021-10-14 | 2021-10-14 | 任务管理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115981830A true CN115981830A (zh) | 2023-04-18 |
Family
ID=85962758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111195868.8A Pending CN115981830A (zh) | 2021-10-14 | 2021-10-14 | 任务管理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115981830A (zh) |
WO (1) | WO2023061014A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6014681A (en) * | 1997-07-15 | 2000-01-11 | Microsoft Corporation | Method for saving a document using a background save thread |
CN106528133B (zh) * | 2016-11-03 | 2021-04-02 | 成都凛冬科技有限公司 | 一种应用于多系统的设备请求处理方法及装置 |
CN107729062A (zh) * | 2017-10-20 | 2018-02-23 | 广东欧珀移动通信有限公司 | 应用冻结方法及相关产品 |
CN109992364B (zh) * | 2017-12-29 | 2020-12-22 | Oppo广东移动通信有限公司 | 应用冻结方法、装置、计算机设备和计算机可读存储介质 |
-
2021
- 2021-10-14 CN CN202111195868.8A patent/CN115981830A/zh active Pending
-
2022
- 2022-08-10 WO PCT/CN2022/111354 patent/WO2023061014A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023061014A1 (zh) | 2023-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113434288B (zh) | 内存管理的方法及电子设备 | |
KR20150066083A (ko) | 전자 장치의 멀티 태스킹 방법 및 그 전자 장치 | |
WO2022089207A1 (zh) | 一种跨设备应用交互方法、电子设备与服务器 | |
CN113553130B (zh) | 应用执行绘制操作的方法及电子设备 | |
CN112732434A (zh) | 一种应用管理方法及装置 | |
CN116009977A (zh) | 通知处理方法、芯片、电子设备及计算机可读存储介质 | |
CN113760192B (zh) | 数据读取方法、装置、存储介质和程序产品 | |
CN113760191B (zh) | 数据读取方法、装置、存储介质和程序产品 | |
CN115016631B (zh) | 进程调度方法和终端设备 | |
CN113918060B (zh) | 应用管理方法和电子设备 | |
CN115981830A (zh) | 任务管理方法及装置 | |
CN116136826A (zh) | 内存访问方法、芯片、电子设备及计算机可读存储介质 | |
CN115278642A (zh) | 获取sim卡的信息的方法、电子设备及终端设备 | |
CN114896097B (zh) | 一种应用程序无响应处理方法及电子设备 | |
CN117009023B (zh) | 显示通知信息的方法及相关装置 | |
WO2024093431A1 (zh) | 一种图像绘制方法及电子设备 | |
WO2023207683A1 (zh) | 应用压缩方法、解压缩方法及电子设备 | |
CN117724825A (zh) | 一种界面显示方法及电子设备 | |
WO2022267786A1 (zh) | 一种快捷图标展示方法与终端设备 | |
CN116033333B (zh) | 确定位置信息的方法、电子设备及可读存储介质 | |
CN117632534A (zh) | 一种进程间通信方法与电子设备 | |
CN118051114A (zh) | 一种应用管控的方法及相关装置 | |
CN117729561A (zh) | 系统升级方法、终端及存储介质 | |
CN116841686A (zh) | 一种应用页面的展示方法 | |
CN115442875A (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 |