具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先,对本申请实施例中涉及的名词进行简单介绍。
自启动:是指在终端中安装的应用程序自动进行启动的一种启动模式。可选地,应用程序可以通过至少如下四种方式实现自启动:
第一,打开活动(英文:activity)实现自启动,如:应用程序A通过运行命令“adbshell am start com.B”打开应用程序B的activity以实现该应用程序B的自启动;
第二,通过接收广播消息实现自启动。可选地,该广播消息可以是操作系统发送至应用程序的,也可以是其他应用程序发送至该应用程序的,该应用程序接收到该广播消息后进行自动运行;
第三,应用程序在自启名单(英文:manifest)中定义了服务,当该服务被运行后,该应用程序也可以实现自启动;
第四,应用程序注册有提供商(英文:provider),当其他应用调用这个应用程序的provider时,该应用程序也会被运行,即实现了自启动。
本申请实施例中,主要针对通过接收广播消息实现自启动的方式进行说明。
操作系统:是管理和控制计算机硬件和软件的计算机程序,主要包括进程和处理机管理、作业管理、存储管理、设备管理以及文件管理等方面。可选地,操作系统是为应用程序提供对计算机硬件的安全访问的基础软件。可选地,操作系统包括安卓操作系统(英文:Android Operating System)、iOS操作系统、Linux操作系统、Windows操作系统等,本申请实施例中,以操作系统为安卓操作系统为例进行说明。
广播(英文:Broadcast):是在操作系统的组件之间、操作系统与应用程序之间或者应用程序与应用程序之间进行意图消息(英文:Intent)传播的一种机制。
广播接收者(BroadcastReceiver):是对操作系统发送或转发的广播消息进行接收的组件,是操作系统(例如Android安卓操作系统)的四大组件之一,操作系统运行过程中,该操作系统的各个状态的变化都会被检测到,并发送对应广播消息至广播接收者,被注册了广播消息接收权限(如:注册了某些指定类型广播消息接收权限)的广播接收者对已注册的广播消息进行接收。
广播发送者:(BroadcastSender):可以是操作系统中用于发送广播的功能模块,也可以是应用程序中用于发送广播的功能模块,其中,当广播发送者是应用程序时,该应用程序无法接收自身发送的广播消息。可选地,广播消息分为无序广播消息和有序广播消息,其中无序广播消息被发送后,所有的接收者都会接收该无序广播消息,且该无序广播消息不可以被拦截也不可以被修改;有序广播消息则是按照优先级,一级一级的向下传递,接收者可以修改有序广播消息,也可以终止传递广播消息。
广播注册:广播注册是指通过注册的方式成为广播消息的接收者。以安卓操作系统为例,在自定义指定类型广播消息的接收者时,需要定义一个类来继承广播接收者BroadcastReceiver,并重写onReceive接收方法,以在指定类型广播消息被发送时,能够接收到该指定类型广播消息,并在接收到该指定类型广播消息后执行onReceive方法中对应的操作。当指定类型广播消息的接收者被自定义后,应用程序可以注册成为指定类型广播消息的接收者。
对指定类型广播消息进行注册时,需要对该指定类型广播消息的接收者进行配置,接收者也可以对该指定类型广播消息进行注册,成为该指定类型广播消息的接收者,在该指定类型广播消息被发送时,会将该指定类型广播消息发送至所有的接收者。
可选地,本申请实施例中,以该广播机制应用于安卓操作系统中为例进行说明。安卓操作系统可以将Intent消息进行广播,由对该Intent消息进行了注册的广播接收器组件来接收并处理。安卓操作系统提供了一整套完整的API(Application ProgrammingInterface,应用程序编程接口),允许应用程序自由地发送和接收广播消息。
有两种方式注册成为指定类型广播消息的接收者:
第一种,通过在代码中实现动态注册;
1、实例化自定义的广播接收者;
2、实例化意图过滤器,并设置要过滤的广播类型(如:当终端接收到短信时,系统发出的广播消息);
3、使用安卓操作系统中的Context的registerReceiver((BroadcastReceiver,IntentFilter,String,Handler)方法注册广播。
第二种,通过在Manifest.xml中静态注册。
在Android应用程序的Manifest.xml配置文件的<application>节点配置广播接收者,并加上相关权限即可。
其中,当应用程序通过动态注册成为指定类型广播消息的接收者时,该指定类型广播消息不是常驻型广播,即当应用程序被关闭时,无法接收到该指定类型广播消息;而通过静态注册成为指定类型广播消息的接收者时,该指定类型广播消息时常驻广播,即,即使应用程序被关闭,依旧可以接收到该指定类型广播消息并被系统调用自动运行。
可选地,应用程序在注册成为指定类型广播消息的接收者时,可以是在应用程序在终端中进行安装时进行注册。
图1示出了应用本申请操作系统的性能优化方法的终端100的一个示例性实施例的软件架构框图。该终端100可以是手机终端、笔记本电脑、PC电脑、平板电脑等智能终端设备,所述终端100上安装有操作系统120和基于该操作系统120安装并运行的应用程序140。
以安装有安卓操作系统的手机终端为例,在安卓操作系统中,广播机制作为最为重要的特性之一,可以很好的解决监控系统的问题。操作系统120作为应用程序140提供对终端硬件的安全访问的基础软件平台,通过广播机制,操作系统120可以向安装运行于该操作系统120上的实现不同功能的各应用程序140发送广播,进而监控操作系统120中各应用程序140的运行状态。
应用程序140在本实施例中不做具体限制,可以是工具类、管理类、办公类、购物类、娱乐类等实现各类功能需要的相关应用程序,在附图1中,该应用程序140仅仅是示意性的示出了包括应用程序142和应用程序144,在实际操作,应用程序的数量可以更多或者更少。
可选地,上述图1中,以操作系统120直接安装在终端100中为例进行说明,在一个可选的实施例中,如图2所示,终端200中直接安装的操作系统为操作系统220,可选地,该操作系统220可以是Windows操作系统,也可以是Linux操作系统、OS操作系统等,该终端200中还安装有模拟器程序240(也可以称为虚拟机),该模拟器程序240用于在应用程序中模拟真实终端中的操作系统以及应用程序,该模拟器程序240中安装有操作系统242、应用程序244以及模拟器程序240,其中,模拟器程序240中的操作系统242可以是安卓操作系统,应用程序244或应用程序246在模拟器程序240中注册成为接收指定类型广播消息的程序,可选地,该终端200中还安装有应用程序260。
示意性的,电脑中直接安装的操作系统为Windows操作系统,以及电脑中安装有手游助手应用程序A,在该手游助手应用程序A中安装有安卓操作系统以及手机游戏程序a,用户可以在电脑的手游助手应用程序A中模拟在安卓操作系统中对手机游戏程序a进行运行。可选地,手游助手应用程序A中还安装有应用程序b,该应用程序b是注册成为广播消息c的接收者的应用程序,当安卓操作系统对广播消息c进行发送时,会向应用程序b发送该广播消息c,应用程序b接收到该广播消息c后发起启动进程以进行自启动。
本申请实施例中,以操作系统以及应用程序直接安装在终端中为例进行说明,实际操作中,操作系统和应用程序还可以安装在终端中安装的模拟器程序中。
图3是本申请一个示例性实施例提供的操作系统的性能优化方法的流程图,如图3所示,以该操作系统的性能优化方法应用于安装有操作系统和至少一个第一应用程序的终端中为例进行说明,其中,第一应用程序具有接收操作系统发送或转发的指定类型广播消息的权限。具体的,该方法包括:
步骤301,操作系统对进程入口函数进行监听。
可选地,该进程入口函数是操作系统向已安装的任意应用程序提供的函数,该进程入口函数用于运行任意应用程序根据自身接收到的广播消息所发起的进程。可选地,进程被写入该进程入口函数后,通过进程入口函数对该进程进行运行。
示意性的,当第一应用程序根据接收到的指定类型广播消息发起启动进程的运行时,将该启动进程写入进程入口函数,并通过进程入口函数对该启动进程进行运行,以实现第一应用程序的自启动。
示意性的,以操作系统为安卓操作系统为例进行说明,该进程入口函数为startProcessLocked入口函数,可选地,该startProcessLocked入口函数为processNextBroadcast方法中的函数。
可选地,在操作系统对进程入口函数进行监听时,操作系统可以持续监听该进程入口函数,也可以当检测到指定类型广播消息被发出时,操作系统对进程入口函数进行监听。可选地,当有广播消息被发出时,操作系统可以对发出的广播消息进行检测。可选的,操作系统可以在广播发送入口进行监控,当监控到有广播消息被发送时,对广播发送方法的进程入口函数进行监听。
步骤302,操作系统监听到第一应用程序的启动进程被写入进程入口函数。
可选地,该启动进程是第一应用程序根据接收到的指定类型广播消息发起的进程,该启动进程用于实现第一应用程序的自启动。
可选地,第一应用进程根据接收到的指定类型广播消息发起启动进程可以通过如下方式中的任意一种:
第一,第一应用程序在注册成为指定类型广播消息的接收者时,还配置有接收到指定类型广播消息后所执行的操作,且第一应用程序将该接收到指定类型广播消息后所执行的操作设置为发起启动进程的运行;
第二,第一应用程序设置有触发机制,该触发机制用于在第一应用程序处于关闭状态,并接收到指定类型广播消息时发起启动进程的运行。
步骤303,操作系统从进程入口函数截获第一应用程序的启动进程。
可选地,操作系统可以在启动进程被写入进程入口函数之前对启动进程进行拦截,也可以在启动进程被写入进程入口函数但还未对该启动进程进行运行时对启动进程进行拦截。也即,在第一应用程序的启动进程未被运行,第一应用程序未实现自启动时对启动进程进行拦截。
步骤304,操作系统根据第一应用程序的启动进程,获取第一应用程序的程序信息。
可选地,该第一应用程序的程序信息包括该第一应用程序的包名、图标、应用程序名、应用程序权限、应用程序的平均资源占用量中的至少一种信息。
可选地,该启动进程携带有上述第一应用程序的程序信息,操作系统直接从启动进程中获取该第一应用程序的程序信息;或,该启动进程中包括第一应用程序的程序包名,操作系统中预存有每个应用程序的程序信息表,根据该程序包名,对应在程序信息表中查找该第一应用程序的程序信息。
步骤305,当第一应用程序的程序信息符合自启动拦截条件时,操作系统结束第一应用程序的启动进程。
可选地,操作系统结束启动进程用于阻止第一应用程序的自启动。
可选地,若操作系统在启动进程被写入进程入口函数之前对该启动进程进行拦截,则操作系统可以拒绝将该启动进程写入进程入口函数以结束该启动进程;若操作系统在启动进程被写入进程入口函数,且未进行运行时拦截该启动进程,则操作系统可以禁止该进程入口函数对该启动进程进行运行以结束该启动进程。
可选地,该结束启动进程可以是结束第一应用程序本身的自启动,也可以是结束第一应用程序中一个或者多个功能模块的自启动,本申请实施例对此不加以限定。
可选地,操作系统获取程序信息后,确定该程序信息与自启动拦截条件是否匹配,当程序信息符合自启动拦截条件时,结束该启动进程。
可选地,该自启动拦截条件包括如下情况中的至少一种:
第一,程序信息表示该第一应用程序为第三方应用程序,而并非系统应用程序;
第二,程序信息表示该第一应用程序的平均资源占用量大于预设资源量;
第三,程序信息表示该第一应用程序为黑名单中的应用程序。
示意性的,请参考图4,终端接收到短信后,通过操作系统41发送接收短信对应的指定类型广播消息411至所有接收者,其中,接收者中包括第一应用程序43,该第一应用程序43是注册成为指定类型广播消息411的接收者的应用程序,第一应用程序43接收到指定类型广播消息411后,发起启动进程412,将其写入操作系统41提供的进程入口函数42以对启动进程412进行运行,操作系统对进程入口函数42进行监控,并对启动进程412进行截获,根据启动进程412获取第一应用程序43的程序信息,当该程序信息符合自启动拦截条件时,结束启动进程412。
综上所述,本申请实施例提供的操作系统的性能优化方法,通过监听进程入口函数,当第一应用程序在接收到指定类型广播消息而进行自启动时,从进程入口函数截获第一应用程序的启动进程,并通过启动进程获取该第一应用程序的程序信息,当程序信息符合自启动拦截条件时,结束该启动进程,从而终止该第一应用程序的自启动,从根本上阻止了第一应用程序通过指定类型广播消息进行自启动,即便第一应用程序将自启动包状态设置为允许状态,也能够拦截第一应用程序因指定类型广播消息而触发的自启动,节约了由于应用程序通过接收广播消息自启动而占用的操作系统资源,避免操作系统过于卡顿或自动重启的问题。
在一个可选的实施例中,判断程序信息是否符合自启动拦截条件时,可以通过第一应用程序的包名,也可以通过程序解析模型,还可以通过第一应用程序的平均资源占用量。在图5所示的实施例中,对上述三种判断程序信息是否符合自启动拦截条件的方式进行说明。
图5是本申请另一个示例性实施例提供的操作系统的性能优化方法流程图,以该方法应用在安装有操作系统和至少一个第一应用程序中为例进行说明,第一应用程序具有接收操作系统发送或转发的指定类型广播消息的权限,该方法包括:
步骤501,操作系统以广播发送模式将指定类型广播消息发送至第一应用程序。
可选地,操作系统在发送指定类型广播消息时,将该指定类型广播消息发送至该指定类型广播消息的所有接收者,由于第一应用程序注册成为了接收该指定类型广播消息的程序,故该第一应用程序接收该指定类型广播消息。
可选地,该指定类型广播消息是由操作系统或由应用程序发出的,可选地,发出该指定类型广播消息的应用程序不能是接收该指定类型广播消息的第一应用程序。可选地,该指定类型广播消息可以是操作系统根据接收到的指令发出的,也可以是操作系统根据接收到的消息发出的,还可以是应用程序根据接收到的消息发出的。示意性的,终端接收到一条短信,操作系统根据接收到的短信发出广播消息,并以广播发送模式将该广播消息发送至所有接收者,以告知所有接收者,终端接收到一条短信。可选地,操作系统发出指定类型广播消息或应用程序发出指定类型广播消息时,都需要通过操作系统中的广播机制(也即通过广播发送模式)将该指定类型广播消息发送至该指定类型广播消息对应的接收者。
可选地,广播消息分为多种不同的类型,该指定类型的广播消息属于该多种不同的类型中的一种类型或一组类型,其中,该多种不同的类型包括:来电响应类型、推送消息类型、心跳检测类型、电池变化类型、参数变化类型、下载更新类型中的至少一种。示意性的,该指定类型的广播消息可以是来电响应类型的广播消息,或该指定类型的广播消息的指定类型同时包括来电响应类型和推送消息类型。
其中,广播发送模式是操作系统对广播消息进行发送时所应用的发送模式,可选地,该广播发送模式是操作系统被开发时,由开发人员进行设定的。
可选地,该广播发送模式包括如下方式:操作系统调用第一函数方法将指定类型广播消息存储至待发送列表,该待发送列表用于存储待发送的广播消息,第一函数方法用于根据指定类型广播消息的广播类型对指定类型广播消息进行存储;操作系统调用第二函数方法将指定类型广播消息发送至接收者,该第二函数方法用于对待发送列表中的广播消息进行发送;操作系统调用第三函数方法对指定类型广播消息进行处理,第三函数方法中包括进程入口函数。
示意性的,以上述操作系统为安卓操作系统为例进行说明,上述第一函数方法为broadcastsIntentLocked方法,上述第二函数方法为scheduleBroadcastsLocked方法以及第三函数方法为ProcessNextBroadcast方法,在对指定类型广播消息进行发送时,首先调用broadcastsIntentLocked方法将指定类型广播消息存储至待发送列表,该待发送列表用于存储待发送的广播;调用scheduleBroadcastsLocked方法将指定类型广播消息发送至该指定类型广播消息的接收者;然后调用ProcessNextBroadcast方法对指定类型广播消息进行处理,其中,ProcessNextBroadcast方法中包括startProcessLocked进程入口函数,该startProcessLocked进程入口函数用于对写入的进程进行运行。
可选地,该指定类型广播消息是由操作系统或由应用程序发出的。
即,在步骤501之前,操作系统生成所述指定类型广播消息,并以广播发送模式将指定类型广播消息发送至指定类型广播消息的接收者,该指定类型广播消息的接收者中包括所述第一应用程序;或,操作系统接收第二应用程序发送的指定类型广播消息,并以广播发送模式将指定类型广播消息发送至指定类型广播消息的接收者,指定类型广播消息的接收者中包括第一应用程序。
其中,在调用第一函数方法将指定类型广播消息存储至待发送列表时,可以首先调用第一函数方法确定指定类型广播消息的广播类型,将指定类型广播消息存储至与广播类型对应的待发送子列表,并将至少两个待发送子列表合并为待发送列表。上述广播类型包括:静态广播或动态广播、有序广播或无序广播等,以静态广播和动态广播作为广播类型为例进行说明,当指定类型广播消息是静态广播时,将指定类型广播消息存储至静态广播对应的第一子列表,或,当指定类型广播消息是动态广播时,将指定类型广播消息存储至动态广播对应的第二子列表,并将第一子列表与第二子列表合并为待发送列表。
步骤502,第一应用程序接收指定类型广播消息。
根据上述对第一应用程序的说明,该第一应用程序是注册成为指定类型广播消息的接收者的程序,即操作系统在将指定类型广播消息发送至接收者时,也会将该指定类型广播消息发送至该第一应用程序。
可选地,第一应用程序在安装至终端的过程中,注册成为指定类型广播消息的接收者,且该第一应用程序在安装后无需再次进行对指定类型广播消息进行注册的步骤,也即,该第一应用程序仅需要在安装时注册成为指定类型广播消息的接收者后,操作系统每次将该指定类型广播消息发送至接收者时都会向该第一应用程序发送该指定类型广播消息,也即操作系统每次将该指定类型广播消息发送至接收者时,第一应用程序都会接收到该指定类型广播消息。
步骤503,第一应用程序根据指定类型广播消息发起启动进程的运行。
可选地,该启动进程用于实现第一应用程序的自启动。
可选地,第一应用程序根据指定类型广播消息发起启动进程的运行的方式包括如下方式中的任意一种:
第一,第一应用程序在注册成为指定类型广播消息的接收者时,还配置有接收到指定类型广播消息后所执行的操作,且第一应用程序将该接收到指定类型广播消息后所执行的操作设置为发起启动进程的运行;
第二,第一应用程序设置有触发机制,该触发机制用于在第一应用程序处于关闭状态,并接收到指定类型广播消息时发起启动进程的运行。
步骤504,操作系统对进程入口函数进行监听。
可选地,该进程入口函数是操作系统向已安装的任意应用程序提供的函数,该进程入口函数用于运行任意应用程序根据自身接收到的广播消息所发起的进程。可选地,进程被写入该进程入口函数后,通过进程入口函数对该进程进行运行。
示意性的,当第一应用程序根据接收到的指定类型广播消息发起启动进程的运行时,将该启动进程写入进程入口函数,并通过进程入口函数对该启动进程进行运行,以实现第一应用程序的自启动。
示意性的,以操作系统为安卓操作系统为例进行说明,该进程入口函数为startProcessLocked入口函数,可选地,该startProcessLocked入口函数为processNextBroadcast方法中的函数。
可选地,在操作系统对进程入口函数进行监听时,操作系统可以持续监听该进程入口函数,也可以当检测到指定类型广播消息被发出时,操作系统对进程入口函数进行监听。可选地,当有广播消息被发出时,操作系统可以对发出的广播消息进行检测。可选的,操作系统可以在广播发送入口进行监控,当监控到有广播消息被发送时,对广播发送方法的进程入口函数进行监听。
步骤505,操作系统监听到第一应用程序的启动进程被写入进程入口函数。
可选地,该启动进程是第一应用程序根据接收到的指定类型广播消息发起的进程,该启动进程用于实现第一应用程序的自启动。
步骤506,操作系统从进程入口函数截获第一应用程序的启动进程。
可选地,操作系统可以在第一应用程序的启动进程被写入进程入口函数之前对启动进程进行拦截,也可以在第一应用程序的启动进程被写入进程入口函数但还未对该启动进程进行运行时对启动进程进行拦截。也即,在第一应用程序的启动进程未被运行,第一应用程序未实现自启动时对启动进程进行拦截。
可选地,截获第一应用程序的启动进程的时机由操作系统对指定类型广播消息的处理流程决定。
可选地,以安卓操作系统对广播的处理流程为例进行说明,该安卓操作系统截获第一应用程序的启动进程的方法如图6所示。
步骤601,发送广播消息(sendbroadcast)。
可选地,该广播消息可以是由操作系统发出并以广播发送模式发送至广播消息的接收者的;也可以是由应用程序发出,并通过操作系统以广播发送模式发送至广播消息的接收者的。
步骤602,调用broadcastIntent方法确定广播消息的接收者,该广播消息的接收者可以根据该广播消息的注册列表确定,即调用ActivityManagerService模块的该broadcastIntent方法确定广播消息的接收者。
步骤603,调用broadcastIntentLocked方法将广播消息存储至待发送列表,即调用该broadcastIntentLocked方法将广播消息存储至待发送列表。
可选地,在调用broadcastIntentLocked方法时,会执行如下操作中的至少一个:判断该广播消息的发送者是否有权利发出该广播消息;处理与应用程序相关的广播消息,即若应用程序被卸载了,移除该应用程序对应的组件;处理一些系统广播消息,如:ACTION_TIMEZONE_CHANGED,ACTION_TIME_CHANGED,PROXY_CHANGE_ACTION;判断将被发送的广播消息是否是粘性广播,并将所有相同类型的粘性广播保存至同一个列表中,最后保存至消息容器StickyBroadcasts中,其中,粘性广播是指被发送后就一直存在于操作系统的消息容器中,并等待对应的处理器去处理,如果暂时没有处理器处理这个粘性广播则一直在消息容器里面处于等待状态的广播消息;分别将静态广播和动态广播保存至receivers列表和registeredReceivers列表中;合并静态广播列表和动态广播列表。
步骤604,调用scheduleBroadcastsLocked方法对广播消息进行处理,即调用scheduleBroadcastsLocked方法发送广播消息至该广播消息的接收者。
步骤605,在Handler处理BROADCAST_INTENT_MSG消息。即在Handler捕获BROADCAST_INTENT_MSG消息,确定广播消息的内容。
步骤606,调用ProcessNextBroadcast方法,即调用ProcessNextBroadcast方法对广播进行处理,可选地,经过ProcessNextBroadcast处理时,应用程序需要进行自启动时,启动进程需要通过进程入口函数startProcessLocked进行运行,而本申请实施例中,安卓操作系统对该进程入口函数startProcessLocked进行监听,并在应用程序的启动进程通过该入口函数之前将其拦截,并通过ResolveInfo获取该应用程序的程序信息。
可选地,第一应用程序的启动进程即通过上述步骤601至步骤606截获得到的。
步骤507,操作系统根据第一应用程序的启动进程,获取第一应用程序的程序信息。
可选地,该第一应用程序的程序信息包括该第一应用程序的包名、图标、应用程序名、应用程序权限、应用程序的平均资源占用量中的至少一种信息。
可选地,该启动进程携带有上述第一应用程序的程序信息,操作系统直接从启动进程中获取该第一应用程序的程序信息;或,该启动进程中包括第一应用程序的程序包名,操作系统中预存有每个应用程序的程序信息表,根据该程序包名,对应在程序信息表中查找该第一应用程序的程序信息。
步骤508,当第一应用程序的包名符合预设包名条件时,操作系统结束第一应用程序的启动进程。
可选地,该程序信息包括第一应用程序的包名,该自启动拦截条件包括预设包名条件。
可选地,确定第一应用程序的包名是否符合预设包名条件的方式包括如下方式中的至少一种:
第一,确定第一应用程序的包名是否包括预设关键词,当第一应用程序的包名不包括预设关键词时,确定第一应用程序的包名符合预设包名条件,则结束启动进程;
示意性的,预设关键词为“android.”,则确定第一应用程序的包名是否包括该关键词,当第一应用程序的包名为“com.appB”时,则该第一应用程序的包名不包括上述关键词,确定第一应用程序的包名符合预设包名条件,则结束启动进程。
可选地,上述实施例中以一个关键词为例进行说明,实际操作中,关键词的个数还可以更多,确定第一应用程序的包名是否包括关键词时,可以当第一应用程序的包名不包括任一关键词时,确定符合预设包名条件,也可以当第一应用程序的包名仅包括部分关键词时,确定符合预设包名条件,本实施例对此不加以限定。
第二,确定第一应用程序的包名是否与预设包名列表中的包名匹配,当第一应用程序的包名与预设包名列表中的包名匹配时,确定第一应用程序的包名符合预设包名条件,则结束启动进程,其中,预设包名列表中预存有禁止自启动的应用程序的包名。
步骤509,操作系统将程序信息输入程序解析模型,输出得到程序解析结果。
可选地,该程序解析模型是通过样本数据进行训练得到的模型,该样本数据包括多个应用程序的程序信息和解析结果标注标签,该程序信息包括:应用程序的包名、图标、应用程序名、应用程序权限、应用程序平均占用资源量中的至少一种信息。
可选地,该应用程序平均占用资源量表示该应用程序启动后,所占用的资源占总资源量的比重,如:第一应用程序启动后,占用的内存占总内存的比重。
可选地,该程序解析模型可以是神经网络模型,也可以是决策树模型等,本申请实施例对此不加以限定。
步骤510,当程序解析结果符合自启动拦截条件时,操作系统结束第一应用程序的启动进程。
可选地,该自启动拦截条件包括程序解析结果是第一应用程序为第三方应用程序,即当第一应用程序为第三方应用程序时,结束启动进程,阻止第一应用程序的自启动;该自启动拦截条件还可以是第一应用程序的平均资源量大于预设资源量。
可选地,上述结束启动进程时,还可以向第一应用程序发送启动失败信号,用于提醒第一应用程序启动过程中失败。
示意性的,以程序解析结果为应用程序为第三方应用程序时,结束启动进程为例,请参考图6,在步骤607中,第一应用程序为第三方应用程序,则执行步骤608,结束,即组织第一应用程序的自启动。步骤609,第一应用程序是系统应用程序时,执行步骤610,启动该第一应用程序。
步骤511,当第一应用程序的平均占用资源量大于预设资源量时,结束第一应用程序的启动进程。
综上所述,本申请实施例提供的操作系统的性能优化方法,通过监听进程入口函数,当第一应用程序在接收到指定类型广播消息而进行自启动时,从进程入口函数截获第一应用程序的启动进程,并通过启动进程获取该第一应用程序的程序信息,当程序信息符合自启动拦截条件时,结束该启动进程,从而终止该第一应用程序的自启动,从根本上阻止了第一应用程序通过指定类型广播消息进行自启动,即便第一应用程序将自启动包状态设置为允许状态,也能够拦截第一应用程序因指定类型广播消息而触发的自启动,节约了由于应用程序通过接收广播消息自启动而占用的操作系统资源,避免操作系统过于卡顿或自动重启的问题。
本实施例提供的方法,通过第一应用程序的包名,当第一应用程序的包名不包括关键词时,认为该第一应用程序的包名符合预设包名条件,利用了安卓操作系统中,系统应用程序的包名与第三方应用程序的包名的显著特征对系统应用程序与第三方应用程序进行区分,便于确定第一应用程序的类别。
本实施例提供的方法,通过程序解析模型对第一应用程序的类别进行分析,利用预训练的模型的准确率,高效便捷的完成对第一应用程序的类别的分析,提高了对第一应用程序的识别效率。
相关技术中,上述调用processNextBroadcast方法后,所执行的分发广播的流程如下图7所示。
该分发广播的流程包括四个部分,ActivityManagerService(简称AMS)71、ActivityThread72、InnerReceiver73以及BroadcastReceiver74;
其中,AMS主要负责操作系统中四大组件(activity、service、content provider、broadcast receiver)的启动、切换、调度以及应用进程的管理和调度等工作;ActivityThread是活动的主线程,InnerReceiver是在分发广播的流程中的一个接收器;BroadcastReceiver是操作系统中的四大组件之一。
如图7所示,在步骤711中,对BROADCAST_INTENT_MSG进行处理。
在步骤712中,调用上述processNextBroadcast方法,执行步骤713,判断mParallelBroadcasts.size()是否大于0,即判断无序广播调度队列中是否存在无序广播需要处理。当无序广播调度队列中不存在无序广播需要处理时,执行步骤714,判断mOrderedBroadcasts.size是否大于0,判断有序广播调度队列中是否存在有序广播需要处理,当不存在有序广播需要处理时,则广播处理完毕,当存在有序广播需要处理时,执行步骤715,判断广播消息是否是静态注册的广播消息。当该广播消息不是静态注册的广播时,执行步骤716,App!=null&&app.thread!=null,判断应用包名和应用线程是否为空。当应用包名和应用线程都不为空时,执行步骤717,调用processCurBroadcastLocked方法来实现对广播消息的处理。处理完毕后,执行步骤721,通过scheduleReceiver接收该动态广播,执行步骤741,onReceive(),通过接收者接收该广播消息,并执行步骤761,finishReceiver()完成动态广播的接收过程。
可选地,当上述步骤713中,无序广播调度队列中存在无序广播需要处理时,执行步骤718,无序广播发送至每一个接收者,执行步骤719,调用performReceiverLocked方法执行发送操作。然后执行步骤751,App!=null&&app.thread!=null,判断应用包名和应用线程是否为空。当应用包名不为空时,执行步骤731,调用performReceiver方法,接收并发送该广播消息,执行步骤741,onReceive(),通过接收者接收该广播消息,并执行步骤761,finishReceiver()完成动态广播的接收过程。当执行步骤751时,判断应用包名和应用线程为空时,执行步骤722,调用scheduleRegisteredReceiver方法,为广播调度接收者,并执行步骤731、步骤741至步骤761。
通过上图7可知,相关技术中,并没有对应用程序的包名是否符合拦截条件进行判断的步骤。
在一个可选的实施例中,第一应用程序首先需要在指定类型广播消息中进行注册,才能在指定类型广播消息被发送时接收到该指定类型广播消息。请参考图8,图8是本申请另一个示例性实施例提供的操作系统的性能优化方法流程图,以该方法应用在安装有操作系统和至少一个第一应用程序的终端中为例进行说明,第一应用程序具有接收操作系统发送或转发的指定类型广播消息的权限,该方法包括:
步骤801,第一应用程序向操作系统发送注册消息。
可选地,该注册消息用于请求注册成为指定类型广播消息的接收者。
步骤802,操作系统接收第一应用程序发送的注册消息。
可选地,指定类型广播消息被发送时,会被发送至该指定类型广播消息的所有接收者。其中,该指定类型广播消息可以是有序广播(通过Context.sendOrderedBroadcast(Intent,String,BroadCastReceiver,Handler,int,String,Bundle)形式发送的广播),也可以是无序广播(通过Context.sendBroadcast(Intent)形式或Context.sendBroadcast(Intent,String)形式发送的广播),当该指定类型广播消息是无序广播时,该指定类型广播消息被直接发送至所有接收者;当该指定类型广播消息是有序广播时,根据接收者的优先级依次向接收者发送该指定类型广播消息,其中,接收者可以对该指定类型广播消息进行修改或者拦截。
可选地,以安卓操作系统为例进行说明,该注册消息可以是用于进行实例化自定义广播接收者的消息,也可以是用于在Manifest.xml文件的<application>节点配置接收者的消息。
可选地,注册包括动态注册以及静态注册,分别对两种注册方式进行说明:
第一种,通过在代码中实现动态注册;
1、实例化自定义的广播接收者;
2、实例化意图过滤器,并设置要过滤的广播类型(如:当终端接收到短信时,系统发出的广播消息);
3、使用安卓操作系统中的Context的registerReceiver((BroadcastReceiver,IntentFilter,String,Handler)方法注册广播。
第二种,通过在Manifest.xml中静态注册。
在Android应用程序的Manifest.xml配置文件的<application>节点配置广播接收者,并加上相关权限即可。
通过静态注册得到的静态广播是指在进程没有运行的时候,也可以先对广播进行接收并启动进程,然后处理广播,即静态广播可以拉起进程;
通过动态注册得到的动态广播是在程序中通过代码显示注册的,因此必须要在进程已经运行的时候才能收到广播。
示意性的,注册成为指定类型广播消息的接收者的方法如图9所示。
首先,注册成为指定类型广播消息的接收者都需要通过活动运行状态管理进程(ActivityManagerService,AMS),其中,AMS91、接收器列表92、粘合(英文:binder)机制93、接收器94以及过滤器95用于完成动态注册;AMS91、内层接收器96、接收器调度97、安装包98、参数99、可运行(英文:Runnable)接口900、待定结果910以及内容接收器存根(英文:IIntentReceiver.Stub)920用于完成静态注册。
动态注册中,AMS91将注册信息发送至接收器列表92进行保存,以及通过接收器列表92和Binder机制93将注册消息发送至接收器94以完成实例化自定义广播接收者,也即对广播接收者进行定义;通过过滤器95中的过滤条件对注册消息进行过滤以完成实例化意图过滤器,并设置要过滤的广播类型;
在静态注册中,AMS91将注册信息发送至内层接收器96,内层接收器96将注册信息发送至IIntentReceiver.Stub920进行存储,以及内层接收器96将注册信息发送至接收器调度97,通过接收器调度97将注册信息发送至安装包98,对安装包中的参数进行配置,以完成在应用程序的Manifest.xml配置文件的<application>节点配置广播接收者,其中,接收器调度97首先获取该应用程序的参数99后,对安装包98进行配置,参数99还需要在Runnable接口900以及待定结果910中进行存储,在Runnable接口900以及待定结果910中进行存储后,该参数可以被接收器调度97获取以对安装包98进行配置。
步骤803,根据注册消息,操作系统将第一应用程序设置为指定类型广播消息的接收者。
步骤804,操作系统以广播发送模式将指定类型广播消息发送至第一应用程序。
可选地,该指定类型广播消息是由操作系统或由应用程序发出的,可选地,发出该指定类型广播消息的应用程序不能是接收该指定类型广播消息的第一应用程序。可选地,该指定类型广播消息可以是操作系统根据接收到的指令发出的,也可以是操作系统根据接收到的消息发出的,还可以是应用程序根据接收到的消息发出的,示意性的,终端接收到一条短信,操作系统根据接收到的短信发出广播消息,并以广播发送模式将该广播消息发送至所有接收者,以告知所有接收者,终端接收到一条短信。可选地,操作系统发出指定类型广播消息或应用程序发出指定类型广播消息时,都需要通过操作系统中的广播机制(也即通过广播发送模式)将该指定类型广播消息发送至该指定类型广播消息对应的接收者。
其中,广播发送模式是操作系统对广播消息进行发送时所应用的发送模式,可选地,该广播发送模式是操作系统被开发时,由开发人员进行设定的。
可选地,该广播发送模式包括如下方式:操作系统调用第一函数方法将指定类型广播消息存储至待发送列表,该待发送列表用于存储待发送的广播消息,第一函数方法用于根据指定类型广播消息的广播类型对指定类型广播消息进行存储;操作系统调用第二函数方法将指定类型广播消息发送至接收者,该第二函数方法用于对待发送列表中的广播消息进行发送;操作系统调用第三函数方法对指定类型广播消息进行处理,第三函数方法中包括进程入口函数。
步骤805,第一应用程序接收指定类型广播消息。
根据上述对第一应用程序的说明,该第一应用程序是注册成为指定类型广播消息的接收者的程序,即操作系统在将指定类型广播消息发送至接收者时,也会将该指定类型广播消息发送至该第一应用程序。
可选地,第一应用程序在安装至终端的过程中,注册成为指定类型广播消息的接收者,且该第一应用程序在安装后无需再次进行对指定类型广播消息进行注册的步骤,也即,该第一应用程序仅需要在安装时注册成为指定类型广播消息的接收者后,操作系统每次将该指定类型广播消息发送至接收者时都会向该第一应用程序发送该指定类型广播消息,也即操作系统每次将该指定类型广播消息发送至接收者时,第一应用程序都会接收到该指定类型广播消息。
步骤806,第一应用程序根据指定类型广播消息发起启动进程的运行。
可选地,该启动进程用于实现第一应用程序的自启动。
可选地,第一应用程序根据指定类型广播消息发起启动进程的运行的方式包括如下方式中的任意一种:
第一,第一应用程序在注册成为指定类型广播消息的接收者时,还配置有接收到指定类型广播消息后所执行的操作,且第一应用程序将该接收到指定类型广播消息后所执行的操作设置为发起启动进程的运行;
第二,第一应用程序设置有触发机制,该触发机制用于在第一应用程序处于关闭状态,并接收到指定类型广播消息时发起启动进程的运行。
步骤807,操作系统对进程入口函数进行监听。
可选地,该进程入口函数是操作系统向已安装的任意应用程序提供的函数,该进程入口函数用于运行任意应用程序根据自身接收到的广播消息发起的进程。
示意性的,当第一应用程序发起启动进程的运行时,将该启动进程写入进程入口函数,并通过进程入口函数对该启动进程进行运行,以实现第一应用程序的自启动。
示意性的,以操作系统为安卓操作系统为例进行说明,该进程入口函数为startProcessLocked入口函数,可选地,该startProcessLocked入口函数为processNextBroadcast方法中的函数。
可选地,在操作系统对进程入口函数进行监听时,操作系统可以持续监听该进程入口函数,也可以当检测到指定类型广播消息被发出时,操作系统对进程入口函数进行监听。可选地,当有广播消息被发出时,操作系统可以对发出的广播消息进行检测。可选的,操作系统可以在广播发送入口进行监控,当监控到有广播消息被发送时,对广播发送方法的进程入口函数进行监听。
步骤808,操作系统监听到第一应用程序的启动进程被写入进程入口函数。
可选地,该启动进程是第一应用程序根据接收到的指定类型广播消息发起的进程,该启动进程用于实现第一应用程序的自启动。
步骤809,操作系统从进程入口函数截获第一应用程序的启动进程。
可选地,操作系统可以在启动进程被写入进程入口函数之前对启动进程进行拦截,也可以在启动进程被写入进程入口函数但还未对该启动进程进行运行时对启动进程进行拦截。也即,在第一应用程序的启动进程未被运行,第一应用程序未实现自启动时对启动进程进行拦截。
步骤810,操作系统根据第一应用程序的启动进程获取第一应用程序的程序信息。
可选地,该第一应用程序的程序信息包括该第一应用程序的包名、图标、应用程序名、应用程序权限、应用程序的平均资源占用量中的至少一种信息。
可选地,该启动进程携带有上述第一应用程序的程序信息,操作系统直接从启动进程中获取该第一应用程序的程序信息;或,该启动进程中包括第一应用程序的程序包名,操作系统中预存有每个应用程序的程序信息表,根据该程序包名,对应在程序信息表中查找该第一应用程序的程序信息。
步骤811,当程序信息符合自启动拦截条件时,操作系统结束启动进程。
可选地,操作系统结束启动进程用于阻止第一应用程序的自启动。
可选地,若操作系统在启动进程被写入进程入口函数之前对该启动进程进行拦截,则操作系统可以拒绝将该启动进程写入进程入口函数以结束该启动进程;若操作系统在启动进程被写入进程入口函数,且未进行运行时拦截该启动进程,则操作系统可以禁止该进程入口函数对该启动进程进行运行以结束该启动进程。
可选地,该结束启动进程可以是结束第一应用程序本身的自启动,也可以是结束第一应用程序中一个或者多个功能模块的自启动,本申请实施例对此不加以限定。
综上所述,本申请实施例提供的操作系统的性能优化方法,通过监听进程入口函数,当第一应用程序在接收到指定类型广播消息而进行自启动时,从进程入口函数截获第一应用程序的启动进程,并通过启动进程获取该第一应用程序的程序信息,当程序信息符合自启动拦截条件时,结束该启动进程,从而终止该第一应用程序的自启动,从根本上阻止了第一应用程序通过指定类型广播消息进行自启动,即便第一应用程序将自启动包状态设置为允许状态,也能够拦截第一应用程序因指定类型广播消息而触发的自启动,节约了由于应用程序通过接收广播消息自启动而占用的操作系统资源,避免操作系统过于卡顿或自动重启的问题。
可选地,上述实施例中的拦截条件包括如下情况中的至少一种:
第一,程序信息表示该第一应用程序为第三方应用程序,而并非系统应用程序;
第二,程序信息表示该第一应用程序的平均资源占用量大于预设资源量;
第三,程序信息表示该第一应用程序为黑名单中的应用程序。
其中,第一种情况主要是考虑第三方应用程序所占用的资源量占总资源量的大半,故对第三方应用程序的自启动进行主要拦截,如图10所示,不对第三方应用程序的自启动进行拦截时,第三方应用程序占用的资源量为55%,不同应用程序共享的资源量为8%,系统预留的资源量为7%以及系统占用的资源量为30%。
图11是本申请一个示例性实施例提供的操作系统的性能优化装置的结构框图,如图11所示,以该装置应用于安装有操作系统和至少一个第一应用程序的终端中,第一应用程序具有接收所述操作系统发送或转发的指定类型广播消息的权限,该装置包括:监听模块111以及获取模块112、启动模块113;
监听模块111,用于所述操作系统对进程入口函数进行监听,所述进程入口函数是所述操作系统向已安装的任意应用程序提供的函数,所述进程入口函数用于运行所述任意应用程序根据自身所接收到的广播消息所发起的进程;
所述监听模块111,还用于所述操作系统监听到所述第一应用程序的启动进程被写入所述进程入口函数,所述启动进程是所述第一应用程序根据接收到的所述指定类型广播消息发起的进程,所述启动进程用于实现所述第一应用程序的自启动;
获取模块112,用于所述操作系统从所述进程入口函数截获所述第一应用程序的所述启动进程;
所述获取模块112,还用于所述操作系统根据所述第一应用程序的所述启动进程,获取所述第一应用程序的程序信息;
启动模块113,用于当所述第一应用程序的程序信息符合自启动拦截条件时,所述操作系统结束所述第一应用程序的所述启动进程。
在一个可选的实施例中,所述监听模块112,还用于所述操作系统持续监听所述进程入口函数;
或,
所述监听模块112,还用于当检测到所述指定类型广播消息被发出时,所述操作系统监听所述进程入口函数。
在一个可选的实施例中,如图12所示,所述装置还包括:
发送模块114,用于所述操作系统以广播发送模式将所述指定类型广播消息发送至所述第一应用程序。
在一个可选的实施例中,发送模块114,还用于所述操作系统调用第一函数装置将所述指定类型广播消息存储至待发送列表,所述待发送列表用于存储待发送的广播消息,所述第一函数装置用于根据所述指定类型广播消息的广播类型对所述指定类型广播消息进行存储;
所述发送模块114,还用于所述操作系统调用第二函数装置将所述指定类型广播消息发送至所述接收者,所述第二函数装置用于对所述待发送列表中的广播消息进行发送;
所述发送模块114,还用于所述操作系统调用第三函数装置对所述指定类型广播消息进行处理,所述第三函数装置中包括所述进程入口函数。
在一个可选的实施例中,所述发送模块114,还用于所述操作系统调用所述第一函数装置确定所述指定类型广播消息的广播类型,所述广播类型包括静态广播和动态广播;
所述发送模块114,还用于当所述指定类型广播消息属于所述静态广播时,所述操作系统将所述指定类型广播消息存储至所述静态广播对应的第一子列表;或,当所述指定类型广播消息属于所述动态广播时,将所述指定类型广播消息存储至所述动态广播对应的第二子列表;
所述发送模块114,还用于所述操作系统将所述第一子列表和所述第二子列表合并为所述待发送列表。
在一个可选的实施例中,所述程序信息包括所述第一应用程序的包名,所述自启动拦截条件包括预设包名条件;
所述启动模块114,还用于当所述第一应用程序的包名符合所述预设包名条件时,所述操作系统结束所述第一应用程序的所述启动进程。
在一个可选的实施例中,所述启动模块114,还用于确定所述第一应用程序的包名是否包括预设关键词;
所述启动模块114,还用于当所述第一应用程序的包名不包括所述预设关键词时,所述操作系统结束所述第一应用程序的所述启动进程。
在一个可选的实施例中,所述启动模块114,还用于所述操作系统将所述程序信息输入程序解析模型,输出得到程序解析结果;
所述启动模块114,还用于当所述程序解析结果符合所述自启动拦截条件时,所述操作系统结束所述第一应用程序的所述启动进程;
其中,所述程序解析模型是通过样本数据进行训练得到的模型,所述样本数据包括多个应用程序的程序信息和解析结果标注标签,所述程序信息包括:所述应用程序的包名、图标、应用程序名、应用程序权限、应用程序平均占用资源量中的至少一种信息。
在一个可选的实施例中,所述程序信息包括所述第一应用程序的平均占用资源量,所述平均占用资源量用于表示所述第一应用程序启动后占用的资源量占总资源量的比重;
所述启动模块114,还用于当所述第一应用程序的平均占用资源量大于预设资源量时,所述操作系统结束所述第一应用程序的所述启动进程。
在一个可选的实施例中,所述装置,还包括
接收模块115,用于所述操作系统接收所述第一应用程序发送的注册消息;
设置模块116,用于所述操作系统根据所述注册消息,将所述第一应用程序设置为所述指定类型广播消息的所述接收者。
在一个可选的实施例中,所述装置,还包括:
生成模块117,用于所述操作系统生成所述指定类型广播消息;
或,
所述接收模块115,还用于所述操作系统接收第二应用程序发送的所述指定类型广播消息。
图13是本申请一个示例性实施例提供的操作系统的性能优化装置的结构框图,如图13所示,以该装置应用于安装有模拟器程序的终端中,该模拟器程序中安装有操作系统和至少一个第一应用程序,第一应用程序具有接收所述操作系统发送或转发的指定类型广播消息的权限,该装置包括:监听模块131、获取模块132以及启动模块133;
监听模块131,用于所述操作系统对进程入口函数进行监听,所述进程入口函数是所述操作系统向已安装的任意应用程序提供的函数,所述进程入口函数用于运行所述任意应用程序根据自身所接收到的广播消息所发起的进程;
所述监听模块131,还用于所述操作系统监听到所述第一应用程序的启动进程被写入所述进程入口函数,所述启动进程是所述第一应用程序根据接收到的所述指定类型广播消息发起的进程,所述启动进程用于实现所述第一应用程序的自启动;
获取模块132,用于所述操作系统从所述进程入口函数截获所述第一应用程序的所述启动进程;
所述获取模块132,还用于所述操作系统根据所述第一应用程序的所述启动进程,获取所述第一应用程序的程序信息;
启动模块133,用于当所述第一应用程序的程序信息符合自启动拦截条件时,所述操作系统结束所述第一应用程序的所述启动进程。
图14示出了本发明一个示例性实施例提供的终端1400的结构框图。该终端1400可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio LayerIII,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group AudioLayer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1400还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1400包括有:处理器1401和存储器1402。
处理器1401可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1401可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1401也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1401可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1401还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1402可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1402还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1402中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1401所执行以实现本申请中方法实施例提供的操作系统的性能优化方法。
在一些实施例中,终端1400还可选包括有:外围设备接口1403和至少一个外围设备。处理器1401、存储器1402和外围设备接口1403之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1403相连。具体地,外围设备包括:射频电路1404、触摸显示屏1405、摄像头1406、音频电路1407、定位组件1408和电源1409中的至少一种。
外围设备接口1403可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1401和存储器1402。在一些实施例中,处理器1401、存储器1402和外围设备接口1403被集成在同一芯片或电路板上;在一些其他实施例中,处理器1401、存储器1402和外围设备接口1403中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1404用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1404通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1404将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1404包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1404可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1404还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1405用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1405是触摸显示屏时,显示屏1405还具有采集在显示屏1405的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1401进行处理。此时,显示屏1405还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1405可以为一个,设置终端1400的前面板;在另一些实施例中,显示屏1405可以为至少两个,分别设置在终端1400的不同表面或呈折叠设计;在再一些实施例中,显示屏1405可以是柔性显示屏,设置在终端1400的弯曲表面上或折叠面上。甚至,显示屏1405还可以设置成非矩形的不规则图形,也即异形屏。显示屏1405可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1406用于采集图像或视频。可选地,摄像头组件1406包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1406还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1407可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1401进行处理,或者输入至射频电路1404以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1400的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1401或射频电路1404的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1407还可以包括耳机插孔。
定位组件1408用于定位终端1400的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件1408可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源1409用于为终端1400中的各个组件进行供电。电源1409可以是交流电、直流电、一次性电池或可充电电池。当电源1409包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1400还包括有一个或多个传感器1410。该一个或多个传感器1410包括但不限于:加速度传感器1411、陀螺仪传感器1412、压力传感器1413、指纹传感器1414、光学传感器1415以及接近传感器1416。
加速度传感器1411可以检测以终端1400建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1411可以用于检测重力加速度在三个坐标轴上的分量。处理器1401可以根据加速度传感器1411采集的重力加速度信号,控制触摸显示屏1405以横向视图或纵向视图进行用户界面的显示。加速度传感器1411还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1412可以检测终端1400的机体方向及转动角度,陀螺仪传感器1412可以与加速度传感器1411协同采集用户对终端1400的3D动作。处理器1401根据陀螺仪传感器1412采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1413可以设置在终端1400的侧边框和/或触摸显示屏1405的下层。当压力传感器1413设置在终端1400的侧边框时,可以检测用户对终端1400的握持信号,由处理器1401根据压力传感器1413采集的握持信号进行左右手识别或快捷操作。当压力传感器1413设置在触摸显示屏1405的下层时,由处理器1401根据用户对触摸显示屏1405的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1414用于采集用户的指纹,由处理器1401根据指纹传感器1414采集到的指纹识别用户的身份,或者,由指纹传感器1414根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1401授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1414可以被设置终端1400的正面、背面或侧面。当终端1400上设置有物理按键或厂商Logo时,指纹传感器1414可以与物理按键或厂商Logo集成在一起。
光学传感器1415用于采集环境光强度。在一个实施例中,处理器1401可以根据光学传感器1415采集的环境光强度,控制触摸显示屏1405的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1405的显示亮度;当环境光强度较低时,调低触摸显示屏1405的显示亮度。在另一个实施例中,处理器1401还可以根据光学传感器1415采集的环境光强度,动态调整摄像头组件1406的拍摄参数。
接近传感器1416,也称距离传感器,通常设置在终端1400的前面板。接近传感器1416用于采集用户与终端1400的正面之间的距离。在一个实施例中,当接近传感器1416检测到用户与终端1400的正面之间的距离逐渐变小时,由处理器1401控制触摸显示屏1405从亮屏状态切换为息屏状态;当接近传感器1416检测到用户与终端1400的正面之间的距离逐渐变大时,由处理器1401控制触摸显示屏1405从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图14中示出的结构并不构成对终端1400的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本申请实施例还提供一种终端,该终端中运行有模拟器程序,该模拟器程序中运行有操作系统和第一应用程序,其中,第一应用程序是注册成为接收指定类型广播消息的程序,操作系统用于执行如图3至图8任一所述的操作系统的性能优化方法。
本申请实施例还提供一种计算机可读存储介质,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如图3至图8任一所述的操作系统的性能优化方法。
本申请还提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述各个方法实施例提供的操作系统的性能优化方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。