CN117707718A - 进程管理的方法、电子设备及可读存储介质 - Google Patents

进程管理的方法、电子设备及可读存储介质 Download PDF

Info

Publication number
CN117707718A
CN117707718A CN202310791521.2A CN202310791521A CN117707718A CN 117707718 A CN117707718 A CN 117707718A CN 202310791521 A CN202310791521 A CN 202310791521A CN 117707718 A CN117707718 A CN 117707718A
Authority
CN
China
Prior art keywords
foreground
application
current
current process
group
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
Application number
CN202310791521.2A
Other languages
English (en)
Inventor
曹博豪
肖继伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202310791521.2A priority Critical patent/CN117707718A/zh
Publication of CN117707718A publication Critical patent/CN117707718A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本申请公开了一种进程管理的方法、电子设备及可读存储介质,属于终端技术领域。该方法包括:启动电子设备中的第一应用。在第一应用运行期间,在计算第一应用的进程的优先级的过程中,更新第一应用的进程的分组状态,使得第一应用的部分进程的分组状态由前台进程组重载为高级前台进程组,部分进程包括系统服务进程和/或执行用户可感知事件的进程,其中,高级前台进程组可用的处理器资源大于前台进程组可用的处理器资源。本申请通过增加高级前台进程组,将前台进程组中的部分进程分组至高级前台进程组中,并为其分配较多的处理器资源,以提高这些进程的处理器速度,从而可以避免出现系统响应慢、应用卡顿等问题。

Description

进程管理的方法、电子设备及可读存储介质
技术领域
本申请涉及终端技术领域,特别涉及一种进程管理的方法、电子设备及可读存储介质。
背景技术
进程是电子设备中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。一个应用通常可以包括一个或者多个进程,在应用运行期间,随着应用的运行状态的变化,应用的一些进程的重要等级可能会降低,由于这些进程仍处于运行状态,所以可能会抢占前台运行的应用所需使用的处理器资源,尤其在负载较高的情况下,使得前台应用不容易得到较多的处理器资源,从而导致出现应用卡顿、系统响应慢等现象。
发明内容
本申请提供了一种进程管理的方法、电子设备及可读存储介质,可以解决相关技术中在负载较高的情况下前台应用不容易得到较多的处理器资源,导致出现应用卡顿、系统响应慢的问题。所述技术方案如下:
第一方面,提供了一种进程管理的方法,应用于电子设备中,所述方法包括:
启动所述电子设备中的第一应用;
在所述第一应用运行期间,在计算所述第一应用的进程的优先级的过程中,更新所述第一应用的进程的分组状态,使得所述第一应用的部分进程的分组状态由前台进程组重载为高级前台进程组,所述部分进程包括系统服务进程、执行用户可感知事件的进程、以及为执行用户可感知事件的进程提供后台服务的进程中的至少一种,其中,所述高级前台进程组可用的处理器资源大于前台进程组可用的处理器资源。
如此,通过增加高级前台进程组,然后将前台进程组中的部分进程分组至高级前台进程组中,并为其分配较多的处理器资源,从而可以避免一些级别较低的进程与这部分进程抢占处理器资源,也即使得前台应用尽可能获得较多的处理器资源,从而可以避免出现系统响应慢、应用卡顿等问题。
作为本申请的一个示例,所述在所述第一应用运行期间,在计算所述第一应用的进程的优先级的过程中,更新所述第一应用的进程的分组状态,包括:
在所述第一应用运行期间,在计算所述第一应用的进程的优先级的过程中,确定所述第一应用的待分组的当前进程的分组状态;
在所述当前进程分组为所述前台进程组的情况下,根据所述当前进程的进程状态和/或与所述当前进程关联的客户端进程,确定所述当前进程是否能够由所述前台进程组重载为所述高级前台进程组;
在根据所述当前进程的进程状态和/或与所述当前进程关联的客户端进程,确定所述当前进程能够重载为所述高级前台进程组的情况下,将所述当前进程的分组状态更新为所述高级前台进程组;
在根据所述当前进程的进程状态和/或与所述当前进程关联的客户端进程,确定所述当前进程不能够重载为所述高级前台进程组的情况下,若所述第一应用正在执行用户可感知事件,则将所述当前进程的分组状态更新为所述高级前台进程组。
如此,在未修改Android原生的进程群组分组规则的计算逻辑的情况下,在当前进程分组为前台进程组后,进一步确定当前进程是否能够重载为高级前台进程组,并在确定能够重载时更新当前进程的分组状态,在减少对原生逻辑修改的同时,可以避免一些级别较低的进程与前台进程抢占处理器资源,提高了系统的稳定性。
作为本申请的一个示例,所述当前进程不是常驻进程;
所述在所述当前进程分组为所述前台进程组的情况下,根据所述当前进程的进程状态和/或与所述当前进程关联的客户端进程,确定所述当前进程是否能够由所述前台进程组重载为所述高级前台进程组,包括:
在所述当前进程是正在接收前台广播的进程,或者是正在为前台进程组的客户端进程提供服务的进程的情况下,根据与所述当前进程关联的客户端进程的等级,确定所述当前进程是否能够由所述前台进程组重载为所述高级前台进程组,其中,与所述当前进程关联的客户端进程是向所述当前进程发送前台广播的客户端进程,或者是请求所述前台进程提供服务的且属于所述前台进程组的客户端进程;
在根据与所述当前进程关联的客户端进程的等级确定所述当前进程不能够重载为所述高级前台进程组的情况下,根据所述当前进程的进程状态,确定所述当前进程是否能够重载为所述高级前台进程组;
在根据所述当前进程的进程状态确定所述当前进程不能够重载为所述高级前台进程组的情况下,根据请求所述当前进程提供服务的客户端进程和/或请求所述当前进程提供内容提供者的客户端进程的分组状态,确定所述当前进程是否能够分组为所述高级前台进程组。
如此,在根据Android原生的进程群组分组规则,将当前进程分组为前台进程组的情况下,进一步依次根据与当前进程关联的客户端进程的等级、当前进程的进程状态和与当前进程关联的客户端进程的分组状态,判断当前进程是否能够重载为高级前台进程组,从而有效地筛选出较为重要的进程并重载为高级前台进程组,避免级别较低的进程抢占前台应用的处理器资源。
作为本申请的一个示例,所述当前进程是正在接收前台广播的进程;
所述根据与所述当前进程关联的客户端进程的等级,确定所述当前进程是否能够由所述前台进程组重载为所述高级前台进程组,包括:
若向所述当前进程发送前台广播的客户端进程是TOP应用进程,和/或,向所述当前进程发送前台广播的客户端进程包含前台界面,则确定所述当前进程能够由所述前台进程组重载为所述高级前台进程组;
若向所述当前进程发送前台广播的客户端进程是非TOP应用进程,且向所述当前进程发送前台广播的客户端进程不包含前台界面,则确定所述当前进程不能够由所述前台进程组重载为所述高级前台进程组。
如此,在与当前进程关联的客户端进程的重要性较高的情况下,确定当前进程能够重载为高级前台进程组,从而可以筛选出较为重要的进程。
作为本申请的一个示例,所述当前进程是正在为前台进程组的客户端进程提供服务的进程;
所述根据与所述当前进程关联的客户端进程的等级,确定所述当前进程是否能够由所述前台进程组重载为所述高级前台进程组,包括:
若请求所述前台进程提供服务的客户端进程是TOP应用进程,和/或,请求所述前台进程提供服务的客户端进程包含前台界面,则确定所述当前进程能够由所述前台进程组重载为所述高级前台进程组;
若请求所述前台进程提供服务的客户端进程是非TOP应用进程,且请求所述前台进程提供服务的客户端进程不包含前台界面,则确定所述当前进程不能够由所述前台进程组重载为所述高级前台进程组。
如此,在与当前进程关联的客户端进程的重要性较高的情况下,确定当前进程能够重载为高级前台进程组,从而可以筛选出较为重要的进程。
作为本申请的一个示例,所述在根据与所述当前进程关联的客户端进程的等级确定所述当前进程不能够重载为所述高级前台进程组的情况下,根据所述当前进程的进程状态,确定所述当前进程是否能够重载为所述高级前台进程组,包括:
在所述当前进程包含悬浮窗,和/或,所述当前进程包含前台服务且包含悬浮窗,和/或,所述当前进程包含处于可见状态或暂停态的活动的情况下,确定所述当前进程能够重载为所述高级前台进程组。
如此,在当前进程的进程状态是用户可感知的情况下,确定当前进程能够重载为高级前台进程组,以避免因资源压缩导致当前进程无法及时响应用户的触控操作,从而避免给用户带来较差的体验。
作为本申请的一个示例,所述当前进程是提供服务和/或内容提供者的进程;
所述在根据所述当前进程的进程状态确定所述当前进程不能够重载为所述高级前台进程组的情况下,根据请求所述当前进程提供服务的客户端进程和/或请求所述当前进程提供内容提供者的客户端进程的分组状态,确定所述当前进程是否能够分组为所述高级前台进程组,包括:
在根据所述当前进程的进程状态确定所述当前进程不能够重载为所述高级前台进程组的情况下,若请求所述当前进程提供服务的客户端进程和/或请求所述当前进程提供内容提供者的客户端进程中包括TOP应用进程,则确定所述当前进程能够分组为所述高级前台进程组。
如此,根据与当前进程关联的客户端进程的分组状态,确定当前进程是否能够重载为高级前台进程组,从而可以有效地筛选出较为重要的进程。
作为本申请的一个示例,所述更新所述第一应用的进程的分组状态,包括:
在所述第一应用为桌面应用的情况下,当所述第一应用切换至后台运行时,将所述第一应用的进程的分组状态由所述前台进程组更新为所述高级前台进程组。
如此,在桌面应用切换至后台运行时,将桌面应用的进程的分组状态重载为高级前台进程组,避免其他应用与桌面应用抢占处理器资源,从而避免在播放退出桌面动画过程中出现丢帧等现象。
作为本申请的一个示例,所述电子设备包括优先级计算模块、优先级应用模块和感知模块,所述感知模块用于监测所述电子设备中的应用执行的任务是否是用户可感知的;
所述在所述第一应用运行期间,在计算所述第一应用的进程的优先级的过程中,确定所述第一应用的待分组的当前进程的分组状态,包括:
在所述第一应用运行期间,在计算所述第一应用的进程的优先级的过程中,所述优先级计算模块确定所述当前进程的分组状态;
所述在所述当前进程分组为所述前台进程组的情况下,根据所述当前进程的进程状态和/或与所述当前进程关联的客户端进程,确定所述当前进程是否能够由所述前台进程组重载为所述高级前台进程组,包括:
在所述当前进程分组为所述前台进程组的情况下,所述优先级计算模块根据所述当前进程的进程状态和/或与所述当前进程关联的客户端进程,确定所述当前进程是否能够重载为所述高级前台进程组;
所述优先级计算模块向所述优先级应用模块发送判断结果;
在确定所述当前进程不能够重载为所述高级前台进程组的情况下,若所述第一应用正在执行用户可感知事件,则将所述当前进程的分组状态更新为所述高级前台进程组,包括;
在所述判断结果指示所述当前进程不能够重载为所述高级前台进程组的情况下,所述优先级应用模块根据应用状态指示信息,确定所述第一应用是否正在执行用户可感知事件,所述应用状态指示信息用于指示所述第一应用的工作状态,所述应用状态指示信息由所述感知模块在监测到所述第一应用的工作状态发生变化后发送;
在根据所述应用状态指示信息确定所述当前进程正在执行用户可感知事件的情况下,所述优先级应用模块将所述当前进程的分组状态更新为所述高级前台进程组。
如此,感知模块在监测到第一应用的工作状态发生变化的情况下,通知给优先级应用模块,使得优先级应用模块可以根据优先级计算模块对当前进程的分组计算结果,结合该第一应用的工作状态,在确定当前进程执行的事件是用户不可感知的情况下,更新当前进程的分组状态,避免重新分组后影响用户对电子设备的使用体验。
第二方面,提供了一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的进程管理的方法。
第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的进程管理的方法。
第四方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的进程管理的方法。
上述第二方面、第三方面和第四方面所获得的技术效果与上述第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
附图说明
图1是根据一示例性实施例示出的一种电子设备的软件系统的框图;
图2是根据一示例性实施例示出的一种进程管理的方法的流程示意图;
图3是根据一示例性实施例示出的一种进程的管理的方法的框架示意图;
图4是根据一示例性实施例示出的一种可见的Activity的示意图;
图5是根据一示例性实施例示出的一种暂停态的Activity的示意图;
图6是根据一示例性实施例示出的一种进程与客户端进程之间的关系示意图;
图7是根据一示例性实施例示出的一种进程的运行状态的示意图;
图8是根据另一示例性实施例示出的一种进程的管理的方法的框架示意图;
图9是根据一示例性实施例示出的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。
应当理解的是,本申请提及的“多个”是指两个或两个以上。在本申请的描述中,除非另有说明,“/”表示或的意思,比如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,比如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
为了便于理解,首先对本申请实施例涉及的术语进行介绍。
绑核:是设定某个进程与某个处理器(central processing unit,CPU)的核的亲和力,设定以后,调度器会将这个进程调度至所绑定的核上去运行。
应用进程:一般是指应用中的进程。按照优先级划分,应用进程一般可以分为前台进程(又可称为TOP应用进程)、可见进程、服务进程和后台进程。前台进程是用户当前操作所必须的进程,在屏幕最前端提供能够被用户看见的界面,且拥有焦点,也即用户能够与之交互,譬如用户可以点击界面上的按钮等。可见进程是没有任何前台组件,但仍会影响用户在屏幕上所见内容的进程。服务进程与用户所见内容没有直接关联,但通常在执行一些用户关心的操作(如从网络下载数据等)。后台进程是对用户体验没有任何影响的进程,系统随时可能终止后台进程,以回收内存以供前台进程、可见进程和服务进程使用。在应用进程是服务进程的情况下,请求该应用进程提供服务的进程称为该应用进程的客户端进程,此时可以称客户端进程与该应用进程相关联。其中,客户端进程可能是系统进程,也可能是第三方应用进程。
Instrumention:是一种测试类应用,可用于自动化脚本测试,通过instrumention可以模拟按键按下、抬起、屏幕点击、滚动等事件。
活动(Activity):是Android系统的四大组件之一,是一个界面的载体,用于向用户展示一个可视化界面,并且可以接收用户处理的输入信息,从而实现与用户进行交互。Activity可以由各种控件组成。在一个示例中,Activity可以用于打开浏览器,打开发短信界面,打开相册界面,打开拨号界面等等。Activity的生命周期中包含是三种状态,分别是resumed(激活)状态、paused(暂停)状态和stopped(停止)状态。resumed状态是指Activity处于屏幕最前端,此时Activity完全显示在用户界面中,并能获取焦点,可以响应用户的各种触控操作。paused状态是指Activity被其他Activity部分遮挡,即仍有部分可见,在处于paused状态的情况下,Activity仍会更新界面,只是不能获取焦点,即不会响应用户的触控操作。stopped状态是指当前Activity被另外一个Activity完全遮挡,stopped状态不意味着Activity停止运行,可以理解为转入后台运行。
内容提供者(content provider):可用于支持多个应用存储和读取数据,相当于数据库。
服务(Service):也是Android系统的四大组件之一,用于处理与应用关联的后台操作。通常用于执行那些不需要和用户交互而且还要求长期运行的任务。Service的运行不依赖于任何用户界面,即使应用被切换到后台,用户打开了另一个应用,Service依然能够保持正常运行。
Toast:一种可视化组件,通常以窗口的形式从屏幕下方浮现出来,且在屏幕上显示一段时间后可自动消失。
在一些实施例中,在对电子设备的进程管理过程中,通常会对进程进行分组管理,譬如请参考表1,会按照规则一(即安卓原生的进程群组分组规则)进行分组,也即将进程划分为前台进程组(或称foregroup group,简称fg)、后台进程组(或称backgroup group,简称bg)和TOP进程组。其中,TOP进程组的优先级高于前台进程组的优先级,以及前台进程组的优先级高于后台进程组的优先级,所以在资源分配时,为TOP进程组分配的可用的处理器资源一般大于前台进程组可用的处理器资源,为前台进程组分配的可用的处理器资源大于后台进程组可用的处理器资源。
表1
规则一 分组描述
前台进程组(fg) 常驻进程、包含Activity处于可视状态等
后台进程组(bg) 后台应用进程
top进程组(top-app) 前台焦点应用进程(即top应用进程)
然而上述进程分组方式中针对前台进程组的划分不够精细,在负载较高的情况下,使得前台应用不容易得到处理器资源,进而会导致系统响应慢、应用卡顿等问题。为此,本申请实施例提供了一种进程管理的方法,该方法通过对前台进程组进一步细化,使得前台进程组中一些较为重要的进程能够使用的处理器资源多于不重要的进程能够使用的处理器资源,从而有效地解决系统响应慢、应用卡顿等问题。
在介绍本申请实施例提供的进程管理的方法之前,先对本申请实施例的执行主体进行介绍。申请实施例提供的进程管理的方法可以应用于电子设备中,该电子设备可以是但不限于手机、运动相机(GoPro)、数码相机、平板电脑、桌面型、膝上型、手持计算机、笔记本电脑、车载设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmentedreality,AR)/虚拟现实(virtual reality,VR)设备等,本申请实施例对此不作限定。
请参考图1,图1是根据一示例性实施例示出的一种电子设备的软件系统的框图。参见图1,分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统层,以及内核层。
应用程序层可以包括一系列应用程序包。如图1所示,应用程序包可以包括多媒体,导航,健康类,卡片,录音机,录像,录屏,相机,图库,通话,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。作为本申请的一个示例,应用程序框架层包括感知模块和活动管理服务(Activity managerservice,AMS)模块。其中,感知模块能够用于感知应用的工作状态,并在确定应用的工作状态发生变化时向AMS模块进行上报。AMS模块是操作系统的重要组成部分,主要负责进程的调度和管理,如AMS模块可以用于统一调度各应用的Activity,AMS模块还可以用于内存管理等。在一个示例中,如图1所示,AMS模块包括优先级计算模块、优先级应用模块和分组设置模块。优先级计算模块用于在进程的生命周期发生变化时计算当前进程的优先级,也即计算进程的ADJ,以及用于确定进程是否能够重载为高级前台进程组(简称high-fg),譬如可以根据预置的high-fg重载规则确定进程是否能够重载为high-fg,其中,high-fg是从前台进程组中分离出的一个分组,其级别高于前台进程组,在一个示例中,其级别低于TOP进程组。可选地,优先级计算模块还可以根据预置的high-fg重载规则,结合感知模块所上报的应用的工作状态,确定进程是否能够重载为high-fg。优先级应用模块用于根据优先级计算模块计算的进程的ADJ对进程进行管理,譬如决定杀掉进程的先后顺序等,优先级应用模块还用于更新进程的分组。设置模块用于设置进程的分组。
此外,应用程序框架层还可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等(图1中未示出)。窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问,这些数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。视图系统包括可视控件,比如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序的显示界面,显示界面可以由一个或多个视图组成,比如,包括显示短信通知图标的视图,包括显示文字的视图,以及包括显示图片的视图。电话管理器用于提供电子设备的通信功能,比如通话状态的管理(包括接通,挂断等)。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等。通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如,通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或滚动条文本形式出现在系统顶部状态栏的通知,比如后台运行的应用程序的通知。通知管理器还可以是以对话窗口形式出现在屏幕上的通知,比如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。作为本申请的一个示例,如图1所示,核心库中包括调度模块(如前文所述的调度器),调度模块可以根据AMS模块设置的进程的分组,为进程分配处理器资源,并根据所分配的处理器资源进行调度,如进行绑核等。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块,比如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(比如:OpenGL ES),2D图形引擎(比如:SGL)等。表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,比如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
下面结合捕获拍照场景,示例性说明电子设备的软件以及硬件的工作流程。
当触摸传感器接收到触摸操作,相应的硬件中断被发给内核层。内核层将触摸操作加工成原始输入事件(包括触摸坐标,触摸操作的时间戳等信息)。原始输入事件被存储在内核层。应用程序框架层从内核层获取原始输入事件,识别原始输入事件所对应的控件。以该触摸操作是单击操作,该单击操作所对应的控件为相机应用图标的控件为例,相机应用调用应用程序框架层的接口,启动相机应用,再调用内核层启动摄像头驱动,通过摄像头捕获静态图像或视频。
在图1所示的电子设备的基础上,接下来对本申请实施例提供的进程管理的方法进行介绍。请参考图2,图2是根据一示例性实施例示出的一种进程管理的方法的流程示意图,作为示例而非限定,该方法应用于上述电子设备中,电子设备通过上述多个模块交互实现,该方法可以包括如下部分或者全部内容:
步骤201:AMS模块启动第一应用。
第一应用可以是电子设备中的任意一个应用程序。譬如第一应用可能是系统应用,也可能是第三方应用。在第一应用是第三方应用的情况下,AMS模块响应于用户对第一应用的启动操作,启动第一应用,也即第一应用由用户触发启动。
步骤202:在第一应用运行期间,感知模块向优先级应用模块上报第一应用的工作状态。
第一应用的工作状态与第一应用具有的功能相关,譬如第一应用是多媒体应用的情况下,第一应用的工作状态包括播放视频、播放音乐、切换至后台等。再如在第一应用是导航应用的情况下,第一应用的工作状态包括正在导航、切换至后台、仅显示应用界面等。
在一种可能的情况下,第一应用是第三方应用,此时第一应用的工作状态对用户是可感知的,示例性地,请参考表2,表2根据一示例性实施例示出了几种用户可感知的应用的工作状态,譬如以第一应用是多媒体应用为例,在多媒体应用处于播放音乐或者播放视频的状态下,用户是可感知的,再如以第一应用是导航应用为例,在导航应用处于位置导航的状态下,用户也是可感知的。
表2
作为本申请的一个示例,请参考图3,感知模块可以在检测到第一应用的工作状态发生变化时,向优先级应用模块上报变化后的工作状态。譬如可以向优先级应用模块发送应用状态指示信息,应用状态指示信息用于指示第一应用的应用状态。
需要说明的是,本申请实施例是以感知模块在检测到第一应用的工作状态发生变化时,向优先级应用模块上报变化后的工作状态为例进行说明。在另一个示例中,感知模块还可以周期性地上报,且周期时长较短,可理解为实时上报,本申请实施例对此不作限定。
另外需要说明的是,上述表2所示的感知模块能够感知的应用状态仅是示例性的,在另一个示例中,感知模块还可以感知电子设备中更多类应用程序的应用状态,本申请实施例对此不作限定。
步骤203:在计算ADJ过程中,优先级计算模块确定第一应用的待分组的当前进程是否能够分组为high-fg。
其中,high-fg是本申请实施例中新增的进程组,可以理解为high-fg是从前台进程组中分离出的一个进程组。如前文所述,high-fg的级别高于前台进程组的级别且high-fg的级别可以低于TOP进程组的级别,因此电子设备为high-fg分配的可用的处理器资源一般要多于为前台进程组分配的可用的处理器资源,并且为high-fg分配的可用的处理器资源可以少于(或等于)为TOP进程组分配的可用的处理器资源。作为一种示例,请参见表3,以电子设备的处理器包括8核为例,为high-fg分配的可用的处理器资源可以包括0-7核,以及为前台进程组分配的可用的处理器资源可以包括0-5核,也即是,分组为high-fg的进程可以被调度至0-7核上运行,分组为前台进程组的进程仅可以被调度至0-5核上运行,而不可再被调度至6核和7核上运行。另外,分组为high-fg的进程对处理器资源的抢占能力也高于前台进程组的进程对处理器资源的抢占能力。
表3
分组 绑核 原分组绑核
high-fg 0-7 0-7
fg 0-5 0-7
在第一应用运行期间,在第一应用的进程的生命周期发生变化时,譬如在第一应用从前台切换至后台,或者从后台切换至前台等,优先级计算模块计算第一应用的进程的ADJ,也即执行computeOomAdj操作。在computeOomAdj的过程中,优先级计算模块可以确定第一应用的待分组的当前进程是否能够分组为high-fg。
作为本申请的一个示例,优先级计算模块确定第一应用的待分组的当前进程是否能够分组为high-fg的具体实现可以包括:在computeOomAdj过程中,优先级计算模块按照安卓原生的进程群组分组规则,确定当前进程的分组状态。在当前进程分组为前台进程组的情况下,进一步确定当前进程是否能够由前台进程组重载为high-fg。
也即为了尽可能减少对安卓原生的进程群组分组规则的实现逻辑的修改,在确定第一应用的待分组的当前进程的分组状态的过程中,优先级计算模块可以先按照安卓原生的进程群组分组规则对当前进程进行分组,在此基础上,优先级计算模块再根据预置的high-fg重载规则进一步判断当前进程是否能够重载为high-fg。
确定第一应用的待分组的当前进程的分组状态一般包括多个阶段,作为本申请的一个示例,可以在每个阶段,在按照安卓原生的进程群组分组规则对当前进程进行分组后,基于当前的分组结果,进一步根据当前进程的进程状态和/或与当前进程关联的客户端进程,判断当前进程是否能够重载为high-fg。具体地,可以包括如下几个阶段:
在第一阶段:在当前进程是正在接收前台广播的进程或者是正在为前台进程组的客户端进程提供服务的进程的情况下,根据与当前进程关联的客户端进程的等级,确定当前进程是否能够由前台进程组重载为高级前台进程组,其中,与当前进程关联的客户端进程是向当前进程发送前台广播的客户端进程,或者是请求前台进程提供服务的且属于前台进程组的客户端进程。
在按照安卓原生的进程群组分组规则进行分组时,通常会将常驻进程以及在运行Activity、service(服务)、广播或者instrumention的单个进程的分组计算为fg,在对单个进程计算结束后,进一步还会基于当前进程的其他属性对当前进程的分组结果进行分组重载,使得当前进程的分组结果可能发生变化,譬如可能使得当前进程从后台进程组提升为前台进程组。在一个示例中,请参见表4,在按照安卓原生的进程群组分组规则进行分组时,一种分组重载的规则是,若当前进程的ADJ小于0(表示是常驻进程)或者当前进程是在运行instrumention的进程,则将当前进程的分组状态重载为fg。另外,在当前进程是正在接收广播的进程的情况下,如果当前进程接收的是前台广播,也即接收的是前台进程发送的广播,则将当前进程的分组状态重载为fg,如果当前进程接收的是后台广播,也即接收的是后台进程发送的广播,则将当前进程的分组状态重载为bg。此外,在当前进程是正在提供服务的进程的情况下,如果请求当前进程提供服务的进程是前台进程组的进程,则将当前进程的分组状态重载为fg,如果请求当前进程提供服务的进程是后台进程组的进程,则将当前进程的分组状态重载为bg。
作为本申请的一个示例,在上述分组的基础上,若当前进程是正在接收广播的进程或者是正在提供服务的进程,在按照安卓原生的进程群组分组规则将当前进程分组为fg后,还可以进一步判断当前进程是否能够从fg重载为high-fg。具体地,可以包括如下两种可能的情况:
第一种情况,当前进程是正在接收前台广播的进程,也即按照安卓原生的进程群组分组规则将当前进程分组为fg,该种情况下,若向当前进程发送前台广播的客户端进程是TOP应用进程,和/或,向当前进程发送前台广播的客户端进程包含前台界面,则确定当前进程能够由前台进程组重载为高级前台进程组。若向当前进程发送前台广播的客户端进程是非TOP应用进程,且向当前进程发送前台广播的客户端进程不包含前台界面,则确定当前进程不能够由前台进程组重载为高级前台进程组。
在一个示例中,包含前台界面包括正在显示应用界面等。
请参见表4,在第一阶段,如果正在向当前进程发送前台广播的客户端进程中包括TOP应用进程或者某客户端进程包含前台界面,说明该客户端进程正在与用户交互,该种情况下,说明当前进程正在接收的前台广播的广播发送者的级别比较高,从而可以说明当前进程正在接收的前台广播的重要性较高,此时可以确定当前进程能够分组为high-fg。否则,如果正在向当前进程发送前台广播的客户端进程中不包括TOP应用进程,且这些客户端进程中不存在客户端进程包含前台界面,说明当前进程正在接收的前台广播的广播发送者的级别不高,从而可以说明当前进程正在接收的前台广播的重要性较低,此时可以确定当前进程不能够分组为high-fg。
第二种情况,在当前进程是正在为前台进程组的客户端进程提供服务的进程的情况下,若请求前台进程提供服务的客户端进程是TOP应用进程,和/或,请求前台进程提供服务的客户端进程包含前台界面,则确定当前进程能够由前台进程组重载为高级前台进程组。若请求前台进程提供服务的客户端进程是非TOP应用进程,且请求前台进程提供服务的客户端进程不包含前台界面,则确定当前进程不能够由前台进程组重载为高级前台进程组。
也即在第一阶段,请继续参考表4,在当前进程是正在提供服务的进程,且按照安卓原生的进程群组分组规则将当前进程重载为fg(也即当前进程正在为前台进程组的客户端进程提供服务)的情况下,可以遍历请求当前进程提供服务的各个客户端进程,其中请求当前进程提供服务的客户端可能是通过start方式请求或是通过bind方式请求的。之后,判断所遍历的各个客户端进程是否包含TOP应用进程,以及是否存在客户端进程包含前台界面,如果遍历的各个客户端进程中包括TOP应用进程,和/或,遍历的各个客户端进程中存在某客户端进程包含前台界面,则说明这些客户端进程在执行用户可感知的事件,从而说明这些客户端进程的级别较高,进而说明这些客户端进程请求的服务也比较重要。因此,可以确定当前进程能够重载为high-fg。否则,如果遍历的各个客户端进程中不包括TOP应用进程,且遍历的各个客户端进程均不包含前台界面,则说明这些客户端进程未在执行用户可感知的事件,从而说明这些客户端进程的级别较低,进而说明这些客户端进程请求的服务的重要性也不高,因此可以确定当前进程不能够重载为high-fg。
表4
需要说明的是,上述是以当前进程不是常驻进程为例,在另一个示例中,在当前进程是常驻进程的情况下,若当前进程是系统服务进程(即system-server),此时说明当前进程在执行系统中较为重要的事件,该种情况下,确定当前能够重载为high-fg,否则,若当前进程不是系统服务进程,譬如当前进程是技术人员自定义的常驻进程,则可以确定当前进程不可重载为high-fg。另外,运行instrumention的进程通常是电子设备中重要性不是那么高的进程,所以本申请实施例不将该类进程重载为high-fg,也即若当前进程是在运行instrumention的进程,则在此阶段维持按照安卓原生的进程群组分组规则进行分组后的分组状态。
在第二阶段:在根据与当前进程关联的客户端进程的等级确定当前进程不能够重载为高级前台进程组的情况下,根据当前进程的进程状态,确定当前进程是否能够重载为高级前台进程组。
请参见表5,在此过程中,在按照安卓原生的进程群组分组规则进行场景重载时,如果当前进程包含前台服务,默认情况下将当前进程重载为bg,其中前台服务是指在通知栏中包括对应的窗口。譬如第一应用在后台播放音乐时,在通知栏中包括用于指示第一应用正在后台播放音乐的窗口,此时第一应用的进程包含前台服务。另外,如果当前进程包含overlayui,则当前进程也会重载为fg。如果当前进程是import进程或是弹toast的进程,则当前进程重载为fg,其中import进程通常用于将一些数据恢复至数据库中。如果当前进程包含可见的Activity或者包含暂停态的Activity,则当前进程也会重载为fg。
作为本申请的一个示例,若当前进程包含前台服务,或者有overlayui,或者包含处于可见状态或暂停态的活动,则当前进程执行的事件对用户可感知,此时当前进程的级别较高,如果在第一阶段确定当前进程不可重载为high-fg,则在此过程需要将当前进程标记为high-fg。具体地,请参见表5,可以包括如下几种情况中的至少一种:
第一种情况,在当前进程包含前台服务且包含overlayui(悬浮窗)的情况下,确定当前进程能够重载为high-fg。
请参见表5,在第二阶段,如果确定当前进程包含前台服务,在按照安卓原生的进程群组分组规则进行计算时,当前进程会分组为bg,如此,后续资源分配和调度时,当前进程仅能够分配到较少的处理器资源,在一种可能的情况下,可以会因资源受压缩导致出现overlayui无法滑动、滑动卡顿等现象。所以,为了避免影响用户的使用体验,在该种情况下,在第二阶段将当前进程确定为可重载为high-fg。
第二种情况,在当前进程包含overlayui的情况下,确定当前进程能够重载为high-fg。
同理,在当前进程包含overlayui的情况下,说明当前进程执行的事件用户可感知,该种情况下,如果在第一阶段确定当前进程不能够重载为high-fg,为了不影响用户的使用体验,在第二阶段确定当前进程可重载为high-fg。
第三种情况,在当前进程包含可见的Activity或者包含暂停态的Activity的情况下,确定当前进程能够重载为high-fg。
在当前进程包括可见的Activity的情况下,说明当前进程会影响用户在屏幕上所见的内容,示例性地,请参见图4,图4中的40是一种可见的Activity的示意图。如果在第一阶段确定当前进程不能够分组为high-fg,则后续资源分配和调度时,当前进程仅能够分配到较少的处理器资源,在一种可能的情况下,可以会因资源受压缩导致出现可见的Activity无法滑动、滑动卡顿等现象。因此,为了避免影响用户的使用体验,在第二阶段确定当前进程可重载为high-fg。
同样,如果当前进程包括暂停态的Activity,则说明当前进程会影响用户在屏幕上所见的内容,示例性地,请参见图5,图5中的51是一种暂停态的Activity的示意图,Activity51被另一个Activity 50部分遮挡。虽然暂停态的Activity不拥有焦点,但是对用户是可感知的,并且,用户随时可能将暂停态的Activity切换至非暂停态的Activity。因此,如果在第一阶段确定当前进程不能够分组为high-fg,则在第二阶段,确定当前进程可重载为high-fg,以避免影响用户的使用体验。
表5
需要说明的是,如果当前进程是import进程或是包含弹toast的进程,则当前进程的重要性相对较低。譬如在当前进程是import进程的情况下,当前进程一般都需要消耗较长时间,所以对实时性要求较低。另外,在当前进程是弹toast的进程的情况下,弹的toast可能是广告之类不重要的窗口。因此在一种可选的实现方式,针对该种场景,可以不将当前进程重载为high-fg。
在第三阶段:在根据当前进程的进程状态确定当前进程不能够分组为高级前台进程组后,根据请求当前进程提供服务的客户端进程和/或请求当前进程提供内容提供者的客户端进程的各客户端进程的分组状态,确定当前进程是否能够分组为高级前台进程组。
在一种可能的情况下,当前进程是提供service的进程,在另一种可能的情况下,当前进程是提供内容提供者的进程,在又一种可能的情况下,当前进程是提供服务和内容提供者的进程,也即当前进程即提供服务,又提供provider。在上述任意一种可能的情况下,当前进程可能被一个客户端进程调用,也可能同时被多个客户端进程调用,譬如如图6所示,第一应用中包括进程1、进程2、进程3、进程4、进程5、进程6和进程7,假设进程1是进程2的客户端进程,进程2是进程3、进程4和进程5的客户端进程,进程6是进程5的客户端进程,以及进程7是进程5的客户端进程,若当前进程是进程5,则当前进程同时被进程2、进程6和进程7调用,也即与当前进程关联的客户端进程包括3个。该种情况下,当前进程的分组状态可以因其关联的至少一个客户端进程的分组状态得到提升。
针对第一种可能的情况,也即在当前进程是提供服务的进程的情况下,请参见表6,在原生的进程群组分组规则中,如果请求当前进程提供服务的客户端进程包括常驻进程,也即与当前进程关联的客户端进程包括常驻进程,则可以直接将当前进程提升为fg,也即当前进程重载为fg。在请求当前进程提供服务的客户端进程不包含BIND_WAIVE_PRIORITY、BIND_NOT_FOREGROUND以及BIND_IMPORTANT_BACKGROUND标志的情况下,将当前进程提升为fg或者提升为与关联的客户端进程的进程组一致,其中,在与当前进程相关联的客户端进程包含BIND_WAIVE_PRIORITY标志的情况下,表示放弃对当前进程的优先级的提升;在关联的客户端进程包含BIND_NOT_FOREGROUND标志的情况下,表示不允许当前进程提升到前台调度优先级;在关联的客户端进程包含BIND_IMPORTANT_BACKGROUND标志的情况下,当前进程被当前后台任务对待。另外,在请求当前进程提供服务的客户端进程包含可见的Activity的情况下,将当前进程的分组状态提升为fg或者BTOP(即与TOP应用进程关联的进程)。
针对上述第二种可能的情况,也即在当前进程是提供provider的进程的情况下,请参见表6,在原生的进程群组分组规则中,如果请求当前进程提供provider的客户端进程所在的进程组的级别高于当前进程所在的进程组的级别,譬如请求当前进程提供provider的客户端进程所在的进程组为前台进程组,而当前进程所在的进程组为后台进程组,则将当前进程组提升为fg。
作为本申请的一个示例,在上述分组基础上,可以进一步判断将当前进程提升为fg的客户端进程的重载情况,根据这些客户端进程的重载情况,确定当前进程是否能够重载为high-fg。示例性地,请参见表6,若请求当前进程提供服务的客户端进程和/或请求当前进程提供内容提供者的客户端进程中包括TOP应用进程,说明这些客户端进程的等级比较高,此时由于当前进程是与这些客户端进程强相关的进程,所以可以确定当前进程能够分组为高级前台进程组。
表6
在一个示例中,若请求当前进程提供服务的客户端进程和/或请求当前进程提供内容提供者的客户端进程中,存在至少一个客户端进程包括前台界面,则也可以确定当前进程能够分组为high-fg。
需要说明的是,本申请实施例是以当前进程是提供服务和/或内容提供者的进程为例进行说明。在另一个示例中,如果当前进程不是提供服务的进程,也不是提供内容提供者的进程,则第二阶段的计算结果即为判断当前进程是否可重载为high-fg的结果。
步骤204:优先级计算模块向优先级应用模块发送判断结果。
该判断结果用于指示当前进程是否能够重载为high-fg。示例性地,判断结果中包括第一指示信息或第二指示信息。第一指示信息用于指示当前进程能够重载为high-fg,第二指示信息用于指示当前不能够重载为high-fg。
步骤205:在判断结果指示当前进程不能够分组为high-fg的情况下,优先级应用模块查询第一应用是否执行用户可感知事件。
在一种可能的情况下,第一应用正在执行用户可感知事件,譬如第一应用是多媒体应用,正在播放视频,该种情况下,如果将第一应用的进程的分组状态维持为fg,可能会影响第一应用的工作效率,因此,在判断结果指示当前进程不能够分组为high-fg的情况下,优先级应用模块还查询第一应用是否执行用户可感知事件。
在实施中,由于感知模块会向优先级应用模块上报第一应用的应用状态指示信息,所以,优先级应用模块可以根据感知模块最近一次上报的应用状态指示信息,确定第一应用是否在执行用户可感知事件,譬如如果应用状态指示信息指示第一应用正在播放视频,则确定第一应用在执行用户可感知事件。
步骤206:在第一应用正在执行用户可感知事件的情况下,优先级应用模块更新当前进程的分组为high-fg。
在一个示例中,优先级应用模块更新当前进程的分组为high-fg的具体实现可以为,优先级应用模块可以为当前进程添加分组标识,分组标识为high-fg。
当然,在第一应用未执行用户可感知事件的情况下,优先级应用模块不更新当前进程的分组为high-fg,也即维持当前进程的分组为fg。
需要说明的是,本申请实施例是以由优先级计算模块判断当前进程是否能够重载为high-fg,然后由优先级应用模块结合感知模块上报的应用状态指示信息确定是否更新当前进程的分组状态为例进行说明。在另一个示例中,请参考图8,感知模块还可以向优先级计算模块上报第一应用的应用状态指示信息,该种情况下,优先级计算模块在每个阶段判断当前进程是否能够重载为high-fg的过程中,可以先根据预置的high-fg规则判断当前进程是否能够重载为high-fg,如果根据预置的high-fg规则确定当前进程不能够重载为high-fg,再结合感知模块上报的应用状态指示信息做进一步判断,如果根据应用状态指示信息确定第一应用执行用户可感知事件,则确定当前进程能够重载为high-fg,否则,如果根据应用状态指示信息确定第一应用未执行用户可感知事件,则确定当前进程不能够重载为high-fg。在经过第三阶段的判断后,将最终的判断结果发送给优先级应用模块。如果判断结果指示当前进程能够分组为high-fg,则优先级应用模块更新当前进程的分组,否则如果判断结果指示当前进程不能够分组为high-fg,则优先级应用模块不修改当前进程的分组状态。
当然需要说明的是,本申请实施例是以判断结果指示当前进程不能够分组为high-fg为例进行说明。在另一个示例中,若判断结果指示当前进程能够分组为high-fg,也即指示当前进程可以重载为high-fg,则优先级应用模块不需要查询第一应用是否执行用户可感知事件,直接将当前进程的分组状态更新为high-fg。
步骤207:优先级应用模块向分组设置模块发送分组指示,分组指示中包括当前进程的进程标识和分组标识。
在一个示例中,分组指示中包括当前进程的进程标识和分组标识,以便于分组设置模块可以获知当前进程被分组至哪个进程组中。譬如优先级应用模块可以向分组设置模块发送setProcessgroup指示。
步骤208:分组设置模块根据分组指示,向调度模块发送设置指令,设置指令中携带当前进程的进程标识和分组标识。
在一个示例中,分组设置模块可以向调度模块发送设置指令,设置指令中携带当前进程的进程标识和分组标识,以便于调度模块可以获知当前进程被分组至哪个进程组中。
步骤209:调度模块根据设置指令,为分组为high-fg的进程分配处理器资源。
在一个示例中,调度模块可以根据设置指令中携带的进程标识和分组标识,为当前进程绑核,之后调度到对应的核上运行。譬如在当前进程被分组至high-fg的情况下,将当前进程调度至0-7核中的某核上运行。再如在当前进程被分组至fg的情况下,将当前进程调度至0-5核中的某核上运行。
按照上述方式可以对第一应用中的各个进程进行分组,并根据所分的组,对当前进程进行调度和管理。如此,可以将一些相比于前台应用的重要等级较高的进程分组为high-fg,譬如将前台进程组中的系统服务进程、执行用户可感知事件的进程、以及为执行用户可感知事件的进程提供后台服务(包括service和/或provider)的进程中的至少一种分组为high-fg,从而在进程调度过程中为这些进程分配较多的处理器资源,避免这些进程的可用处理器资源被其他级别较低的进程抢占。如此,使得处理器资源可以优先被前台应用以及重要的系统服务进程使用,从而可以提高用户体验。
作为本申请的一个示例,在第一应用是桌面应用的情况下,当桌面应用切换至后台运行时,将第一应用的进程的分组状态由前台进程组更新为高级前台进程组。
通常情况下,桌面应用在后台运行时,其分组为fg。在一个示例性的应用场景中,在桌面应用上显示其他应用(如应用A)的应用界面的情况下,如果用户从电子设备底端向上滑动,响应于用户的该滑动操作,电子设备将应用A切换至后台并返回至桌面应用。目前,在应用A退出后,要等退出桌面动画播放结束后,才能将应用A分组为bg,请参考图7,应用A退出后要等待约803.2ms才能切换至bg,也即焦点要等待退出桌面动画播放结束后才能切换,从而可能导致应用A与桌面应用抢占处理器资源,进而可能导致在播放退出桌面动画过程中出现丢帧等现象。为了避免这一情况,可以在应用A退出桌面时,将桌面应用的进程的分组状态重载为high-fg。进一步地,可以从桌面应用开始播放退出桌面动画时,将桌面应用的进程的分组状态重载为high-fg,以避免应用A退出后台后还与桌面应用抢占处理器资源,从而使得桌面应用能够有足够的处理器资源播放退出桌面动画等。
在本申请实施例中,启动第一应用后,在第一应用运行期间,在计算第一应用的进程的优先级的过程中,更新第一应用的进程的分组状态,使得第一应用的部分进程分组从前台进程组重载为高级前台进程组,部分进程包括系统服务进程、执行用户可感知事件的进程、以及为执行用户可感知事件的进程提供后台服务的进程中的至少一种,其中高级前台进程组可用的处理器资源大于前台进程组可用的处理器资源。如此,通过增加高级前台进程组,然后将前台进程组中的部分进程分组至高级前台进程组中,并为其分配较多的处理器资源,从而可以避免这些进程的可用处理器资源被其他级别较低的进程抢占,进而可以避免出现系统响应慢、应用卡顿等问题。
图9是本申请实施例提供的一种电子设备的结构示意图。参见图9,电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serialbus,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等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器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的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口,如可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备100供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成目标通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),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)。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
外部存储器接口120可以用于连接外部存储卡,比如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。比如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,计算机可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,来执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,目标功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100在使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,比如目标磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D以及应用处理器等实现音频功能,比如音乐播放,录音等。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置目标麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器180K可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,比如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(比如:同轴电缆、光纤、数据用户线(Digital Subscriber Line,DSL))或无线(比如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质,或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(比如:软盘、硬盘、磁带)、光介质(比如:数字通用光盘(Digital Versatile Disc,DVD))或半导体介质(比如:固态硬盘(Solid State Disk,SSD))等。
以上所述为本申请提供的可选实施例,并不用以限制本申请,凡在本申请的揭露的技术范围之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (11)

1.一种进程管理的方法,其特征在于,应用于电子设备中,所述方法包括:
启动所述电子设备中的第一应用;
在所述第一应用运行期间,在计算所述第一应用的进程的优先级的过程中,更新所述第一应用的进程的分组状态,使得所述第一应用的部分进程的分组状态由前台进程组重载为高级前台进程组,所述部分进程包括系统服务进程、执行用户可感知事件的进程、以及为执行用户可感知事件的进程提供后台服务的进程中的至少一种,其中,所述高级前台进程组可用的处理器资源大于前台进程组可用的处理器资源。
2.如权利要求1所述的方法,其特征在于,所述在所述第一应用运行期间,在计算所述第一应用的进程的优先级的过程中,更新所述第一应用的进程的分组状态,包括:
在所述第一应用运行期间,在计算所述第一应用的进程的优先级的过程中,确定所述第一应用的待分组的当前进程的分组状态;
在所述当前进程分组为所述前台进程组的情况下,根据所述当前进程的进程状态和/或与所述当前进程关联的客户端进程,确定所述当前进程是否能够由所述前台进程组重载为所述高级前台进程组;
在根据所述当前进程的进程状态和/或与所述当前进程关联的客户端进程,确定所述当前进程能够重载为所述高级前台进程组的情况下,将所述当前进程的分组状态更新为所述高级前台进程组;
在根据所述当前进程的进程状态和/或与所述当前进程关联的客户端进程,确定所述当前进程不能够重载为所述高级前台进程组的情况下,若所述第一应用正在执行用户可感知事件,则将所述当前进程的分组状态更新为所述高级前台进程组。
3.如权利要求2所述的方法,其特征在于,所述当前进程不是常驻进程;
所述在所述当前进程分组为所述前台进程组的情况下,根据所述当前进程的进程状态和/或与所述当前进程关联的客户端进程,确定所述当前进程是否能够由所述前台进程组重载为所述高级前台进程组,包括:
在所述当前进程是正在接收前台广播的进程,或者是正在为前台进程组的客户端进程提供服务的进程的情况下,根据与所述当前进程关联的客户端进程的等级,确定所述当前进程是否能够由所述前台进程组重载为所述高级前台进程组,其中,与所述当前进程关联的客户端进程是向所述当前进程发送前台广播的客户端进程,或者是请求所述前台进程提供服务的且属于所述前台进程组的客户端进程;
在根据与所述当前进程关联的客户端进程的等级确定所述当前进程不能够重载为所述高级前台进程组的情况下,根据所述当前进程的进程状态,确定所述当前进程是否能够重载为所述高级前台进程组;
在根据所述当前进程的进程状态确定所述当前进程不能够重载为所述高级前台进程组的情况下,根据请求所述当前进程提供服务的客户端进程和/或请求所述当前进程提供内容提供者的客户端进程的分组状态,确定所述当前进程是否能够分组为所述高级前台进程组。
4.如权利要求3所述的方法,其特征在于,所述当前进程是正在接收前台广播的进程;
所述根据与所述当前进程关联的客户端进程的等级,确定所述当前进程是否能够由所述前台进程组重载为所述高级前台进程组,包括:
若向所述当前进程发送前台广播的客户端进程是TOP应用进程,和/或,向所述当前进程发送前台广播的客户端进程包含前台界面,则确定所述当前进程能够由所述前台进程组重载为所述高级前台进程组;
若向所述当前进程发送前台广播的客户端进程是非TOP应用进程,且向所述当前进程发送前台广播的客户端进程不包含前台界面,则确定所述当前进程不能够由所述前台进程组重载为所述高级前台进程组。
5.如权利要求3所述的方法,其特征在于,所述当前进程是正在为前台进程组的客户端进程提供服务的进程;
所述根据与所述当前进程关联的客户端进程的等级,确定所述当前进程是否能够由所述前台进程组重载为所述高级前台进程组,包括:
若请求所述前台进程提供服务的客户端进程是TOP应用进程,和/或,请求所述前台进程提供服务的客户端进程包含前台界面,则确定所述当前进程能够由所述前台进程组重载为所述高级前台进程组;
若请求所述前台进程提供服务的客户端进程是非TOP应用进程,且请求所述前台进程提供服务的客户端进程不包含前台界面,则确定所述当前进程不能够由所述前台进程组重载为所述高级前台进程组。
6.如权利要求3-5中任一项所述的方法,其特征在于,所述在根据与所述当前进程关联的客户端进程的等级确定所述当前进程不能够重载为所述高级前台进程组的情况下,根据所述当前进程的进程状态,确定所述当前进程是否能够重载为所述高级前台进程组,包括:
在所述当前进程包含悬浮窗,和/或,所述当前进程包含前台服务且包含悬浮窗,和/或,所述当前进程包含处于可见状态或暂停态的活动的情况下,确定所述当前进程能够重载为所述高级前台进程组。
7.如权利要求3-5中任一项所述的方法,其特征在于,所述当前进程是提供服务和/或内容提供者的进程;
所述在根据所述当前进程的进程状态确定所述当前进程不能够重载为所述高级前台进程组的情况下,根据请求所述当前进程提供服务的客户端进程和/或请求所述当前进程提供内容提供者的客户端进程的分组状态,确定所述当前进程是否能够分组为所述高级前台进程组,包括:
在根据所述当前进程的进程状态确定所述当前进程不能够重载为所述高级前台进程组的情况下,若请求所述当前进程提供服务的客户端进程和/或请求所述当前进程提供内容提供者的客户端进程中包括TOP应用进程,则确定所述当前进程能够分组为所述高级前台进程组。
8.如权利要求1所述的方法,其特征在于,所述更新所述第一应用的进程的分组状态,包括:
在所述第一应用为桌面应用的情况下,当所述第一应用切换至后台运行时,将所述第一应用的进程的分组状态由所述前台进程组更新为所述高级前台进程组。
9.如权利要求2-8中任一项所述的方法,其特征在于,所述电子设备包括优先级计算模块、优先级应用模块和感知模块,所述感知模块用于监测所述电子设备中的应用执行的任务是否是用户可感知的;
所述在所述第一应用运行期间,在计算所述第一应用的进程的优先级的过程中,确定所述第一应用的待分组的当前进程的分组状态,包括:
在所述第一应用运行期间,在计算所述第一应用的进程的优先级的过程中,所述优先级计算模块确定所述当前进程的分组状态;
所述在所述当前进程分组为所述前台进程组的情况下,根据所述当前进程的进程状态和/或与所述当前进程关联的客户端进程,确定所述当前进程是否能够由所述前台进程组重载为所述高级前台进程组,包括:
在所述当前进程分组为所述前台进程组的情况下,所述优先级计算模块根据所述当前进程的进程状态和/或与所述当前进程关联的客户端进程,确定所述当前进程是否能够重载为所述高级前台进程组;
所述优先级计算模块向所述优先级应用模块发送判断结果;
在确定所述当前进程不能够重载为所述高级前台进程组的情况下,若所述第一应用正在执行用户可感知事件,则将所述当前进程的分组状态更新为所述高级前台进程组,包括;
在所述判断结果指示所述当前进程不能够重载为所述高级前台进程组的情况下,所述优先级应用模块根据应用状态指示信息,确定所述第一应用是否正在执行用户可感知事件,所述应用状态指示信息用于指示所述第一应用的工作状态,所述应用状态指示信息由所述感知模块在监测到所述第一应用的工作状态发生变化后发送;
在根据所述应用状态指示信息确定所述当前进程正在执行用户可感知事件的情况下,所述优先级应用模块将所述当前进程的分组状态更新为所述高级前台进程组。
10.一种电子设备,其特征在于,所述电子设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-9任意一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如权利要求1-9任意一项所述的方法。
CN202310791521.2A 2023-06-29 2023-06-29 进程管理的方法、电子设备及可读存储介质 Pending CN117707718A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310791521.2A CN117707718A (zh) 2023-06-29 2023-06-29 进程管理的方法、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310791521.2A CN117707718A (zh) 2023-06-29 2023-06-29 进程管理的方法、电子设备及可读存储介质

Publications (1)

Publication Number Publication Date
CN117707718A true CN117707718A (zh) 2024-03-15

Family

ID=90144944

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310791521.2A Pending CN117707718A (zh) 2023-06-29 2023-06-29 进程管理的方法、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN117707718A (zh)

Similar Documents

Publication Publication Date Title
US10467025B2 (en) Managing delivery of code and dependent data using application containers
CN113434288B (zh) 内存管理的方法及电子设备
US20150130705A1 (en) Method for determining location of content and an electronic device
KR20150066083A (ko) 전자 장치의 멀티 태스킹 방법 및 그 전자 장치
WO2022089207A1 (zh) 一种跨设备应用交互方法、电子设备与服务器
CN114327666B (zh) 应用启动方法、装置和电子设备
CN115292199B (zh) 一种显存泄露的处理方法及相关装置
KR20150066876A (ko) 사용자 인터페이스 제어 방법 및 그 전자 장치
CN113760192B (zh) 数据读取方法、装置、存储介质和程序产品
CN117707718A (zh) 进程管理的方法、电子设备及可读存储介质
CN117707719A (zh) 进程管理的方法、电子设备及可读存储介质
CN116700813B (zh) 微件的加载方法、电子设备及可读存储介质
CN116033333B (zh) 确定位置信息的方法、电子设备及可读存储介质
CN116088955B (zh) 进程处理方法和终端设备
CN116719556B (zh) 系统升级的方法和电子设备
CN116662150B (zh) 应用启动耗时检测方法及相关装置
CN115828227B (zh) 识别广告弹窗的方法、电子设备及存储介质
CN117131240B (zh) 服务推荐方法、电子设备及计算机可读存储介质
CN116095230B (zh) 应用程序推荐方法和终端设备、可读存储介质
CN116055443B (zh) 识别社交场景的方法、电子设备及计算机可读存储介质
CN117009023B (zh) 显示通知信息的方法及相关装置
WO2023061014A1 (zh) 任务管理方法及装置
CN116089320B (zh) 垃圾回收方法和相关装置
CN117707752A (zh) 音频中爆音的消除方法、电子设备及可读存储介质
CN117670379A (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