CN113485709A - 应用优化方法、装置以及电子设备 - Google Patents
应用优化方法、装置以及电子设备 Download PDFInfo
- Publication number
- CN113485709A CN113485709A CN202110661937.3A CN202110661937A CN113485709A CN 113485709 A CN113485709 A CN 113485709A CN 202110661937 A CN202110661937 A CN 202110661937A CN 113485709 A CN113485709 A CN 113485709A
- Authority
- CN
- China
- Prior art keywords
- application
- compiling
- target application
- optimized
- parameters
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- 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
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Telephone Function (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种应用优化方法、装置以及电子设备,涉及终端技术领域,目的在于在保障更新场景下不出现发烫卡顿的问题的同时,兼顾用户使用应用时的性能体验。具体方案为:将更新场景下需要对至少部分未优化应用执行的优化编译操作进行取消或延迟;所述未优化应用为更新场景下需要进行优化编译操作的应用;检测是否存在未优化应用冷启动;若检测到存在未优化应用冷启动,则触发执行目标应用对应的优化编译操作;所述目标应用为检测到的冷启动的未优化应用。
Description
技术领域
本申请涉及终端技术领域,尤其涉及一种应用优化方法、装置以及电子设备。
背景技术
现有技术中,手机设备进行更新的场景下,通常需要对许多应用程序进行优化处理。具体的,通过触发各个应用程序的优化编译线程,将各个应用程序编译为oat格式文件,得到各个应用程序的优化文件,完成各个应用的性能优化。
然而,由于更新场景中需要进行优化的应用程序过多,进而会导致中央处理器(central processing unit,CPU)负载过大,手机开机后会出现发烫卡顿现象,给用户带来不好的用户体验。
发明内容
本申请提供了一种应用优化方法、装置以及电子设备,目的在于在保障更新场景下不出现发烫卡顿的问题的同时,兼顾用户使用应用时的性能体验。
为了实现上述目的,本申请提供了以下技术方案:
第一方面,本申请提供了一种应用优化方法,包括:将更新场景下需要对至少部分未优化应用执行的优化编译操作进行取消或延迟,其中未优化应用为更新场景下需要进行优化编译操作的应用。然后检测是否存在未优化应用冷启动,如果检测到存在未优化应用冷启动,则触发执行目标应用对应的优化编译操作,目标应用为检测到的冷启动的未优化应用。
本申请所提供的应用优化方法,通过将更新场景下需要对未优化应用执行的部分优化编译操作进行延迟,使得CPU不会出现负载过大的现象,且通过在检测到存在未优化应用冷启动时触发执行目标应用对应的优化编译操作的方式,实现在减小CPU负载的情况下,保障用户在使用应用时,应用能够具有优化后的性能。
在一种可能的实现方式中,检测是否存在未优化应用冷启动,包括:若检测到存在应用冷启动,则判断应用是否为未优化应用。若判断出应用为未优化应用,就确定出了存在未优化应用冷启动,若判断出应用不为未优化应用,则确定出不存在未优化应用冷启动。
在另一种可能的实现方式中,若检测到存在应用冷启动,则判断冷启动的应用是否为未优化应用,包括:
若检测到存在应用冷启动,则确定冷启动的应用对应的优化文件是否因更新场景而导致无效。若冷启动的应用对应的优化文件因更新场景而导致无效,则确定出冷启动的应用是未优化应用,若冷启动的应用对应的优化文件不因更新场景而导致无效,则确定出冷启动的应用不是未优化应用。
在另一种可能的实现方式中,将更新场景下需要对未优化应用执行的部分优化编译操作进行延迟之后,还包括:
通过服务调度器在满足处于设备空闲状态的条件时,触发执行延迟的优化编译操作。
在本申请所提供的应用优化方法中,除了可以在检测到存在未优化应用冷启动时,触发执行目标应用对应的优化编译操作,还可以在满足处于设备空闲状态的条件时,触发执行延迟的优化编译操作,实现在减小CPU负载的情况下,进一步的保障应用能够具有优化后的性能。
在另一种可能的实现方式中,满足处于设备空闲状态的条件为灭屏、电量大于预设电量值、且处于充电状态。
在另一种可能的实现方式中,若检测到存在未优化应用冷启动之后,还包括:
先创建优化编译线程,然后对优化编译线程中的编译需求参数进行设置,得到目标应用的编译需求参数,目标应用的编译需求参数,包括:目标应用标识、以及目标应用在优化编译过程中适配的参数。进一步的,通过目标应用的编译需求参数,可按照目标应用在优化编译过程的需求来配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数,目标应用的编译操作参数用于说明执行目标应用对应的优化编译操作时的操作方式。触发执行目标应用对应的优化编译操作,包括:使用配置后的目标应用的编译操作参数,触发执行目标应用对应的优化编译操作。
在另一种可能的实现方式中,配置后的目标应用的编译操作参数,包括:执行目标应用对应的优化编译操作时使用的处理器核、执行优化编译操作时的线程数、编译级别、以及终止预设时长中的至少一种参数,终止预设时长为执行目标应用对应的优化编译操作的最大时长。
在另一种可能的实现方式中,通过目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数之前,还包括:将目标应用的编译需求参数添加到未优化管控队列中,未优化管控队列中编译需求参数按照检测到未优化应用冷启动的时间顺序排列,然后检测当前是否处于设备繁忙状态,若检测到当前处于设备繁忙状态,则延迟运行未优化管控队列,并在延迟第一预设时长之后,返回执行检测当前是否处于设备繁忙状态步骤。通过目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数,包括:若检测到当前不处于设备繁忙状态,且当前未优化管控队列运行到目标应用的编译需求参数,则通过目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数。
在另一种可能的实现方式中,通过目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数之前,还包括:将目标应用的编译需求参数传入服务调度器中。通过目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数,包括:通过服务调度器在满足不处于设备繁忙状态的条件时,触发通过目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数。
在另一种可能的实现方式中,通过目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数之前,还包括:先获取设备状态参数,然后在执行通过目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数时,可以通过目标应用的编译需求参数和设备状态参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数。
在另一种可能的实现方式中,使用配置后的目标应用的编译操作参数,触发执行目标应用对应的优化编译操作之后,还包括:接收目标应用对应的优化编译操作的执行结果,并结束优化编译线程。
在另一种可能的实现方式中,执行目标应用对应的优化编译操作,包括:
通过调用dex2oat执行目标应用对应的优化编译操作。
在另一种可能的实现方式中,通过调用dex2oat执行目标应用对应的优化编译操作,包括:通过调用dex2oat,将目标应用对应的dex格式文件编译为oat格式文件。
第二方面,本申请提供了另一种应用优化方法,应用于电子设备,电子设备安装有应用,电子设备包括:应用管控模块、字节码编译模块和Runtime,方法包括:
字节码编译模块将更新场景下需要对至少部分未优化应用执行的优化编译操作进行取消或延迟,未优化应用为更新场景下需要进行优化编译操作的应用,当应用管控模块接收到应用发送的冷启动消息,则响应冷启动消息,确定应用是否为未优化应用,冷启动消息中携带有应用标识和冷启动标识,若确定出应用为未优化应用,应用管控模块触发Runtime执行对应用的优化编译操作。
本申请所提供的应用优化方法,通过字节码编译模块将更新场景下需要对未优化应用执行的部分优化编译操作进行延迟,使得CPU不会出现负载过大的现象,且通过应用管控模块响应冷启动消息,确定应用为未优化应用时,触发Runtime执行对应用的优化编译操作,以实现在减小CPU负载的情况下,保障用户在使用应用时,应用能够具有优化后的性能。
在一种可能的实现方式中,应用管控模块确定应用是否为未优化应用包括:
应用管控模块向字节码编译模块请求获取应用的优化文件状态信息,请求中携带有应用标识,然后Runtime向应用管控模块发送应用的优化文件状态信息,应用的优化文件状态信息用于表示应用的优化文件是否因系统升级而导致无效,若应用的优化文件状态信息表示应用的优化文件因系统升级而导致无效,则应用管控模块确定出应用为未优化应用,若应用的优化文件状态信息表示应用的优化文件不是因系统升级而导致无效,则应用管控模块确定出应用不为未优化应用。
在另一种可能的实现方式中,应用管控模块触发Runtime执行对应用的优化编译操作,包括:应用管控模块创建优化编译线程,应用管控模块对优化编译线程中的编译需求参数进行设置,得到目标应用的编译需求参数,目标应用的编译需求参数,包括:目标应用标识、以及目标应用在优化编译过程中适配的参数,应用管控模块向所述字节码编译模块发送启动编译消息,启动编译消息携带有目标应用的编译需求参数,然后字节码编译模块会响应启动编译消息,基于目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数,目标应用的编译操作参数用于表示执行目标应用对应的优化编译操作时的操作方式,字节码编译模块使用配置后的目标应用的编译操作参数,触发Runtime执行对所述应用的优化编译操作。
在另一种可能的实现方式中,配置后的目标应用的编译操作参数,包括:执行目标应用对应的优化编译操作时使用的处理器核、执行优化编译操作时的线程数、编译级别、以及终止预设时长中的至少一种参数;终止预设时长为执行目标应用对应的优化编译操作的最大时长。
在另一种可能的实现方式中,字节码编译模块基于目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数之前,还包括:字节码编译模块将目标应用的编译需求参数添加到未优化管控队列中,未优化管控队列中编译需求参数按照检测到未优化应用冷启动的时间顺序排列,字节码编译模块检测当前是否处于设备繁忙状态,若检测到当前处于所述设备繁忙状态,则字节码编译模块延迟运行未优化管控队列,并在延迟第一预设时长之后,返回执行检测当前是否处于设备繁忙状态步骤,字节码编译模块基于所述目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数,包括:字节码编译模块若检测到当前不处于设备繁忙状态,且当前未优化管控队列运行到目标应用的编译需求参数,则基于目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数。
在另一种可能的实现方式中,字节码编译模块基于目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数之前,还包括:
字节码编译模块将目标应用的编译需求参数传入服务调度器中,然后基于目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数,包括:通过服务调度器在满足不处于设备繁忙状态的条件时,触发执行基于目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数。
在另一种可能的实现方式中,字节码编译模块基于目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数之前,还包括:字节码编译模块获取设备状态参数,字节码编译模块基于目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数,包括:字节码编译模块基于目标应用的编译需求参数和设备状态参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数。
在另一种可能的实现方式中,所述字节码编译模块使用配置后的目标应用的编译操作参数,触发Runtime执行对所述应用的优化编译操作之后,还包括:Runtime向应用管控模块发送目标应用对应的优化编译操作的执行结果,响应目标应用对应的优化编译操作的执行结果,结束优化编译线程。
在另一种可能的实现方式中,字节码编译模块将更新场景下需要对至少部分未优化应用执行的优化编译操作进行延迟之后,还包括:字节码编译模块通过服务调度器在满足处于设备空闲状态的条件时,触发执行延迟的优化编译操作。
第三方面,本申请提供了一种电子设备,包括:一个或多个处理器、存储器、显示屏、无线通信模块以及移动通信模块;
存储器、显示屏、无线通信模块以及移动通信模块与一个或多个处理器耦合,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,电子设备执行如上述第一方面或第一方面的可能的实现方式中任一项所述的方法,或者,上述第二方面或第二方面的可能的实现方式中任一项所述的方法。
第四方面,本申请提供了一种应用优化装置,所述应用优化装置包括:处理单元、存储单元、显示单元、收发单元,存储单元用于存储一个或多个程序;处理单元用于执行所述一个或多个程序;一个或多个程序包括指令,指令用于执行如上述第一方面或第一方面的可能的实现方式中任一项所述的方法;或者,指令用于执行如上述第二方面或第二方面的可能的实现方式中任一项所述的方法。
第五方面,本申请提供了一种计算机存储介质,该计算机存储介质可包括计算机指令,当该计算机指令在电子设备上运行时,使得该电子设备执行如上述第一方面或第一方面的可能的实现方式中任一项所述的方法,或者,如上述第二方面或第二方面的可能的实现方式中任一项所述的方法。
第六方面,本申请提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得该计算机执行如上述第一方面或第一方面的可能的实现方式中任一所述的方法,或者,执行如上述第二方面或第二方面的可能的实现方式中任一所述的方法。
应当理解的是,本申请中对技术特征、技术方案、有益效果或类似语言的描述并不是暗示在任意的单个实施例中可以实现所有的特点和优点。相反,可以理解的是对于特征或有益效果的描述意味着在至少一个实施例中包括特定的技术特征、技术方案或有益效果。因此,本说明书中对于技术特征、技术方案或有益效果的描述并不一定是指相同的实施例。进而,还可以任何适当的方式组合本实施例中所描述的技术特征、技术方案和有益效果。本领域技术人员将会理解,无需特定实施例的一个或多个特定的技术特征、技术方案或有益效果即可实现实施例。在其他实施例中,还可在没有体现所有实施例的特定实施例中识别出额外的技术特征和有益效果。
附图说明
图1为手机系统升级过程中CPU频率变化示例图;
图2为手机系统升级过程中CPU频率和温度的变化示例图;
图3为本申请提供的一种电子设备的组成示例图一;
图4为本申请提供的一种电子设备的软件结构示例图;
图5本申请实施例提供的一种应用优化方法流程示意图一;
图6本申请实施例提供的一种应用优化方法流程示意图二;
图7为本申请提供的一种电子设备的组成示例图二;
图8为本申请提供的一种应用优化装置的组成示例图。
具体实施方式
本申请说明书和权利要求书及附图说明中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于限定特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
为了下述各实施例的描述清楚简洁,首先给出一种应用优化过程的实现方案的简要介绍:
手机设备在更新场景下,经常因为需要对许多应用程序进行优化处理,而出现手机卡顿、发烫等现象。例如图1所示,图1为手机系统升级过程中CPU频率变化示例图。当在手机系统升级这一更新场景时,在开机的过程中需要大概执行131次dex2oat操作,持续约4分钟,而开机亮屏一分钟之后,也需要执行161次dex2oat操作,持续时间约8分钟,由于所需执行的dex2oat过多,可以从图1中看出,在开机过程中,甚至开机完成之后,执行dex2oat的时间过长,CPU频率较大,容易导致设备卡顿发烫,影响用户使用手机的体验。
图2为手机系统升级过程中CPU频率和温度的变化示例图。如图2所示,在开机过程中,由于CPU处理的dex2oat过多,并且没有对CPU的频率进行限制,导致手机温度不断升高,手机出现发烫现象,在开机完成之后,手机设备为了保护手机能正常运行,在检测到手机温度过高时,就会对CPU频率进行限制,因此开机之后CPU频率被限制为较低频率,导致开机后CPU处理dex2oat时所需花的时间更长了,且手机运行速率较低,给用户带来不好的使用体验。
dex2oat是一种编译生成优化文件的函数,可以将应用的dex格式文件编译为oat文件,实现对应用的优化。在系统升级过程中,许多应用为了适应升级后的系统,都需要进行相应的优化操作,由此才能为用户提供较好的性能。但优化过程往往执行时间长、且手机发烫卡顿,如何在更新场景下进行应用优化的过程中,减轻手机发烫卡顿的现象,是现有技术中待解决的一个问题。
基于上述技术方案中存在的问题,本申请提供了一种应用优化方法,以解决更新场景下手机发烫卡顿的问题。所提供的应用优化方法,可以适用于手机、平板电脑、桌面型、膝上型、笔记本电脑、超级移动个人计算机(Ultra-mobile Personal Computer,UMPC)、手持计算机、上网本、个人数字助理(Personal Digital Assistant,PDA)、可穿戴电子设备、智能手表等电子设备。其中,适用该应用优化方法的电子设备,其结构可以如图3所示。
如图3所示,图3为本申请提供的一种电子设备的组成示例图一,电子设备可以包括处理器310,外部存储器接口320,内部存储器321,通用串行总线(universal serialbus,USB)接口330,充电管理模块340,电源管理模块341,电池342,天线1,天线2,移动通信模块350,无线通信模块360,音频模块370,扬声器370A,受话器370B,麦克风370C,耳机接口370D,传感器模块380,按键390,马达391,指示器392,摄像头393,显示屏394,以及用户标识模块(subscriber identification module,SIM)卡接口395等。其中传感器模块380可以包括压力传感器380A,陀螺仪传感器380B,气压传感器380C,磁传感器380D,加速度传感器380E,距离传感器380F,接近光传感器380G,指纹传感器380H,温度传感器380J,触摸传感器380K,环境光传感器380L,骨传导传感器380M等。
可以理解的是,本实施例示意的结构并不构成对该电子设备的具体限定。在另一些实施例中,该电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器310可以包括一个或多个处理单元,例如:处理器310可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。例如,在本申请中,处理器310可以根据智能家居设备的状态信息编排场景,即生成控制规则,控制规则用于控制智能家居设备。在电子设备接收到开启智能家居场景的第二操作之后,电子设备响应第二操作,根据控制规则控制智能家居设备进入与状态信息对应的状态。所述智能家居设备是与电子设备登录的用户账户关联的智能家居设备。进一步的,所述智能家居设备还可以是在与电子设备登录的用户账户关联的智能家居设备中用户操作过的智能家居设备。
其中,控制器可以是电子设备302的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器310中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器310中的存储器为高速缓冲存储器。该存储器可以保存处理器310刚用过或循环使用的指令或数据。如果处理器310需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器310的等待时间,因而提高了系统的效率。
在一些实施例中,处理器310可以包括一个或多个接口。接口可以包括集成电路(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)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器310可以包含多组I2C总线。处理器310可以通过不同的I2C总线接口分别耦合触摸传感器380K,充电器,闪光灯,摄像头393等。例如:处理器310可以通过I2C接口耦合触摸传感器380K,使处理器310与触摸传感器380K通过I2C总线接口通信,实现电子设备302的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器310可以包含多组I2S总线。处理器310可以通过I2S总线与音频模块370耦合,实现处理器310与音频模块370之间的通信。在一些实施例中,音频模块370可以通过I2S接口向无线通信模块360传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块370与无线通信模块360可以通过PCM总线接口耦合。在一些实施例中,音频模块370也可以通过PCM接口向无线通信模块360传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器310与无线通信模块360。例如:处理器310通过UART接口与无线通信模块360中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块370可以通过UART接口向无线通信模块360传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器310与显示屏394,摄像头393等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器310和摄像头393通过CSI接口通信,实现电子设备302的拍摄功能。处理器310和显示屏194通过DSI接口通信,实现电子设备302的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器310与摄像头393,显示屏394,无线通信模块360,音频模块370,传感器模块380等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
USB接口330是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USBTypeC接口等。USB接口330可以用于连接充电器为电子设备302充电,也可以用于电子设备302与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备302的结构限定。在本申请另一些实施例中,电子设备302也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块340用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块340可以通过USB接口330接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块340可以通过电子设备302的无线充电线圈接收无线充电输入。充电管理模块340为电池342充电的同时,还可以通过电源管理模块341为电子设备供电。
电源管理模块341用于连接电池342,充电管理模块340与处理器310。电源管理模块341接收电池342和/或充电管理模块340的输入,为处理器310,内部存储器321,显示屏394,摄像头393,和无线通信模块360等供电。电源管理模块341还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块341也可以设置于处理器310中。在另一些实施例中,电源管理模块341和充电管理模块340也可以设置于同一个器件中。
电子设备的无线通信功能可以通过天线1,天线2,移动通信模块350,无线通信模块360,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块350可以提供应用在电子设备上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块350可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块350可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块350还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块350的至少部分功能模块可以被设置于处理器310中。在一些实施例中,移动通信模块350的至少部分功能模块可以与处理器310的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器370A,受话器370B等)输出声音信号,或通过显示屏394显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器310,与移动通信模块350或其他功能模块设置在同一个器件中。
无线通信模块360可以提供应用在电子设备上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块360可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块360经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器310。无线通信模块360还可以从处理器310接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备的天线1和移动通信模块350耦合,天线2和无线通信模块360耦合,使得电子设备302可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(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)。
电子设备通过GPU,显示屏394,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏394和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器310可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏394用于显示图像,视频等。显示屏394包括显示面板。显示面板可以采用液晶显示屏(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)等。在一些实施例中,电子设备可以包括1个或N个显示屏394,N为大于1的正整数。
电子设备的显示屏394上可以显示一系列图形用户界面(graphical userinterface,GUI),这些GUI都是该电子设备的主屏幕。一般来说,电子设备的显示屏394的尺寸是固定的,只能在该电子设备的显示屏394中显示有限的控件。控件是一种GUI元素,它是一种软件组件,包含在应用程序中,控制着该应用程序处理的所有数据以及关于这些数据的交互操作,用户可以通过直接操作(direct manipulation)来与控件交互,从而对应用程序的有关信息进行读取或者编辑。一般而言,控件可以包括图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏、Widget等可视的界面元素。例如,在本申请实施例中,显示屏194可以显示虚拟按键(一键编排、开始编排、场景编排)。
电子设备可以通过ISP,摄像头393,视频编解码器,GPU,显示屏394以及应用处理器等实现拍摄功能。
ISP用于处理摄像头393反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头393中。
摄像头393用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备可以包括1个或N个摄像头393,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备可以支持一种或多种视频编解码器。这样,电子设备可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口320可以用于连接外部存储卡,例如MicroSD卡,实现扩展电子设备的存储能力。外部存储卡通过外部存储器接口320与处理器310通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器321可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器310通过运行存储在内部存储器321的指令,从而执行电子设备302的各种功能应用以及数据处理。例如,在本实施例中,处理器310可以通过执行存储在内部存储器321中的指令,进行场景编排。内部存储器321可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器321可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器310通过运行存储在内部存储器321的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备的各种功能应用以及数据处理。
电子设备可以通过音频模块370,扬声器370A,受话器370B,麦克风370C,耳机接口370D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块370用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块370还可以用于对音频信号编码和解码。在一些实施例中,音频模块370可以设置于处理器310中,或将音频模块370的部分功能模块设置于处理器310中。
扬声器370A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备可以通过扬声器370A收听音乐,或收听免提通话。
受话器370B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备接听电话或语音信息时,可以通过将受话器370B靠近人耳接听语音。
麦克风370C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风370C发声,将声音信号输入到麦克风370C。电子设备可以设置至少一个麦克风370C。在另一些实施例中,电子设备可以设置两个麦克风370C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备还可以设置三个,四个或更多麦克风370C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口370D用于连接有线耳机。耳机接口170D可以是USB接口330,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
压力传感器380A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器380A可以设置于显示屏394。压力传感器380A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器380A,电极之间的电容改变。电子设备根据电容的变化确定压力的强度。当有触摸操作作用于显示屏394,电子设备根据压力传感器380A检测所述触摸操作强度。电子设备也可以根据压力传感器380A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
陀螺仪传感器380B可以用于确定电子设备的运动姿态。在一些实施例中,可以通过陀螺仪传感器380B确定电子设备围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器380B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器380B检测电子设备抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备的抖动,实现防抖。陀螺仪传感器380B还可以用于导航,体感游戏场景。
气压传感器380C用于测量气压。在一些实施例中,电子设备通过气压传感器380C测得的气压值计算海拔高度,辅助定位和导航。
磁传感器380D包括霍尔传感器。电子设备可以利用磁传感器380D检测翻盖皮套的开合。在一些实施例中,当电子设备是翻盖机时,电子设备可以根据磁传感器380D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
加速度传感器380E可检测电子设备在各个方向上(一般为三轴)加速度的大小。当电子设备静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
距离传感器380F,用于测量距离。电子设备可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备可以利用距离传感器380F测距以实现快速对焦。
接近光传感器380G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备通过发光二极管向外发射红外光。电子设备使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备附近有物体。当检测到不充分的反射光时,电子设备可以确定电子设备附近没有物体。电子设备可以利用接近光传感器380G检测用户手持电子设备贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器380G也可用于皮套模式,口袋模式自动解锁与锁屏。
环境光传感器380L用于感知环境光亮度。电子设备可以根据感知的环境光亮度自适应调节显示屏394亮度。环境光传感器380L也可用于拍照时自动调节白平衡。环境光传感器380L还可以与接近光传感器380G配合,检测电子设备是否在口袋里,以防误触。
指纹传感器380H用于采集指纹。电子设备可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器380J用于检测温度。在一些实施例中,电子设备利用温度传感器380J检测的温度,执行温度处理策略。例如,当温度传感器380J上报的温度超过阈值,电子设备执行降低位于温度传感器380J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备对电池342加热,以避免低温导致电子设备异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备对电池342的输出电压执行升压,以避免低温导致的异常关机。
触摸传感器380K,也称“触控器件”。触摸传感器380K可以设置于显示屏394,由触摸传感器380K与显示屏394组成触摸屏,也称“触控屏”。触摸传感器380K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏394提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器380K也可以设置于电子设备的表面,与显示屏394所处的位置不同。
骨传导传感器380M可以获取振动信号。在一些实施例中,骨传导传感器380M可以获取人体声部振动骨块的振动信号。骨传导传感器380M也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器380M也可以设置于耳机中,结合成骨传导耳机。音频模块370可以基于所述骨传导传感器380M获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器380M获取的血压跳动信号解析心率信息,实现心率检测功能。
按键390包括开机键,音量键等。按键390可以是机械按键。也可以是触摸式按键。电子设备可以接收按键输入,产生与电子设备的用户设置以及功能控制有关的键信号输入。
马达391可以产生振动提示。马达391可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏394不同区域的触摸操作,马达391也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
指示器392可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口395用于连接SIM卡。SIM卡可以通过插入SIM卡接口395,或从SIM卡接口395拔出,实现和电子设备的接触和分离。电子设备可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口395可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口395可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口395也可以兼容不同类型的SIM卡。SIM卡接口395也可以兼容外部存储卡。电子设备通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备中,不能和电子设备分离。
另外,在上述部件之上,运行有操作系统。例如鸿蒙系统,iOS操作系统,Android开源操作系统,Windows操作系统等。在该操作系统上可以安装运行应用程序。
图4是本申请实施例的电子设备的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。如图4所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。在本申请实施例中,应用程序层中有多个属于未优化应用的应用程序。未优化应用为更新场景下需要进行优化编译操作的应用。应用程序层中,各个应用程序所对应的优化文件的状态参数可说明应用程序是否为未优化应用。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。如图4所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。例如,在本申请的一些实施例中,应用程序框架层还可以包括字节码编译模块和应用管控模块。在系统升级场景下,字节码编译模块预先将系统升级场景下需要对至少部分未优化应用执行的优化编译操作进行取消或延迟。而应用层中的应用冷启动时,则会向应用管控模块的启动消息接口发送应用的冷启动消息,然后应用管控模块就会通过调用Android runtime上的优化文件状态接口,从系统库的Android runtime获取到应用的优化文件是否因系统升级而导致过时的检测结果,若检测结果为该应用的优化文件因系统升级而导致过时,则创建优化编译线程,并对优化编译线程中的编译需求参数进行设置,得到目标应用的编译需求参数,然后发送携带有目标应用的编译需求参数的启动编译消息给字节码编译模块。其中,目标应用为应用管控模块检测到的冷启动的未优化应用。字节码编译模块接收到启动编译消息之后,通过启动编译消息中携带的目标应用的编译需求参数配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数。然后字节码编译模块再使用配置后的目标应用的编译操作参数,调用dex2oat,将目标应用的dex文件编译为oat文件,完成目标应用的优化。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。在本申请一些实施例中,应用冷启动会在Android runtime中运行,Android runtime由此获取到应用的优化文件状态参数,进而Android runtime可以通过优化文件状态参数判断优化文件是否因系统升级而导致过时,并将判断结果返回给应用管控模块。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
需要说明的是,本申请实施例虽然以Android系统为例进行说明,但是其基本原理同样适用于基于鸿蒙、iOS、Windows等操作系统的电子设备。
下面结合系统升级场景,示例性说明电子设备软件以及硬件的工作流程。
在系统升级场景下,字节码编译模块预先将系统升级场景下需要对至少部分未优化应用执行的优化编译操作进行取消或延迟。当触摸传感器380K接收到触摸操作,上报给处理器310,使得处理器响应于上述触摸操作,启动该应用,并在显示屏394上显示该应用的用户界面。而若启动该应用时为冷启动,则会向应用管控模块的启动消息接口发送应用的冷启动消息,应用管控模块就会通过优化状态接口,从系统库的Android runtime获取到应用的优化文件是否因系统升级而导致过时的检测结果,若检测结果为该应用的优化文件因系统升级而导致过时,则创建优化编译线程,并对优化编译线程中的编译需求参数进行设置,得到目标应用的编译需求参数,然后发送携带有目标应用的编译需求参数的启动编译消息给字节码编译模块,以触发字节码编译模块对目标应用执行优化编译操作。其中,目标应用为应用管控模块检测到的冷启动的未优化应用。字节码编译模块接收到启动编译消息之后,通过启动编译消息中携带的目标应用的编译需求参数配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数。然后字节码编译模块再使用配置后的目标应用的编译操作参数,调用dex2oat,将目标应用的dex文件编译为oat文件,完成目标应用的优化。由于本申请中字节码编译模块预先将系统升级场景下需要对至少部分未优化应用执行的优化编译操作进行取消或延迟,取消或延迟的优化编译操作,仅在应用管控模块检测到冷启动的应用的优化文件因系统升级而导致过时时,才触发对该应用的优化编译操作,在通过取消或延迟优化编译操作的方式来降低CPU负载,解决电子设备卡顿发烫现象的同时,通过冷启动的应用的优化文件因系统升级而导致过时的条件,优先触发执行对该应用的优化编译操作,以使得用户所使用到的应用能够在性能上优先得到优化,保障了用户使用应用时能够较好的性能体验。
下面将具体结合图5至图6阐述本申请的实施例。为了便于描述,下面以电子设备是手机为例说明。
图5为本申请实施例提供的一种应用优化方法流程示意图一。如图5所示,该应用优化方法可以包括:
S501、字节码编译模块预先将系统升级场景下需要对至少部分未优化应用执行的优化编译操作进行取消,或延迟至满足处于设备空闲状态的条件时触发执行。
其中,未优化应用为系统升级场景(例如HOTA场景、OTA场景)下需要进行优化编译操作的应用。随着系统的升级,许多应用需要为了适配升级后的系统,而进行相应的优化(例如升级应用相关的一些函数库),否则就会出现应用的个别性能无法适用于升级之后的系统的情况,这些因系统升级而导致需要进行优化编译的应用在本申请实施例中被统称为未优化应用。
在一些实施例中,字节码编译模块所取消或者延迟执行的系统升级场景下需要对至少部分未优化应用执行的优化编译操作,可以是手机开机一分钟后需要执行的优化编译操作。由于手机因发烫被限制CPU频率通常发生在开机一分钟后,因此可以选择将手机开机一分钟后原本需要执行的优化编译操作直接删除或者延迟到满足处于设备空闲状态的条件时再触发执行,而手机开机过程中需要执行的优化编译操作正常触发执行,以保障手机不会因为手机发烫而导致限频。在另一些实施例中,也可以是把所有系统升级场景中需要执行的所有优化编译操作全部取消执行或者延迟,还可以是依据经验选择最将影响手机运行效率的部分优化编译操作取消或者延迟。字节码编译模块所取消或者延迟的优化编译操作可根据具体情况进行选择。在字节码编译模块选择将系统升级场景下需要对至少部分未优化应用执行的优化编译操作进行取消或者延迟的情况下,所取消或者延迟的优化编译操作会通过步骤S501之后的步骤,实现在未优化应用冷启动时,触发执行冷启动的未优化应用的优化编译操作,具体可参见下述对步骤S501之后的步骤的描述。
在一些实施例中,系统升级场景下原本需要对未优化应用所执行的优化编译操作写入字节码编译模块中的服务调度器中的,在执行步骤S501时,通过删除服务调度器中原本在系统升级场景下需要对至少部分未优化应用执行的优化编译操作,即可取消系统升级场景下需要对至少部分未优化应用执行的优化编译操作。而将处于设备空闲状态的条件作为执行至少部分未优化应用的优化编译操作的触发条件,写入至服务调度器中,即可实现将系统升级场景下需要对至少部分未优化应用执行的优化编译操作进行延迟,直至满足处于设备空闲状态的条件时再触发执行。例如,由于手机在开机一分钟后所执行的优化编译操作容易导致手机发烫卡顿,因此可以选择将服务调度器原本需要在开机一分钟后触发执行的优化编译操作进行删除,来实现取消执行手机原本在开机一分钟后需执行的优化编译操作。又或者,在服务调度器中为原本在开机一分钟后需执行的优化编译操作增加一个触发条件,该触发条件可以为处于设备空闲状态的条件,以实现在满足处于设备空闲状态的条件时,触发执行原本需要在开机一分钟后执行的优化编译操作。需要说明的是,若有应用冷启动,且通过图5示出的步骤S502至步骤S517,判断出该应用是未优化应用,触发执行了该应用的优化编译操作,那么之后在满足处于设备空闲状态的触发条件时,就不再触发该应用的优化编译操作。即进行延迟的未优化应用的优化编译操作,如果通过步骤S502至步骤S517的方式被触发执行了,那么后续在满足触发条件时,就不会再被执行优化编译操作。同理,如果某个被延迟的应用的优化编译操作,在满足触发条件时执行了,那么在该应用冷启动时,触发执行图5示出的步骤S502至步骤S505,就会在执行到步骤S505时,被应用管控模块判断出该应用不是未优化应用(因为该应用已经在满足触发条件时执行了优化编译操作),因此会结束流程,即不再触发执行该应用的优化编译操作。
在一些实施例中,满足处于设备空闲状态的条件为灭屏、电量大于预设电量值、且处于充电状态。例如,可以是将满足手机灭屏、手机电量大于95%、且处于充电状态写入至服务调度器内,作为开机一分钟后所需执行的优化编译操作的触发条件,以使得服务调度器在手机满足手机灭屏、手机电量大于95%、且处于充电状态时,接收到触发信号,触发执行开机一分钟后所需执行的优化编译操作。
在一些实施例中,优化编译操作指的是一种将应用的优化文件进行编译处理的操作,例如通过dex2oat函数将应用的dex文件编译为oat文件。
现有技术中,在系统升级场景下,通常是在开机过程中,以及开机完成一分钟后,通过字节码编译模块对大量的未优化应用执行优化编译操作,造成手机CPU负载过大,手机出现卡顿、发烫现象,而这一过程中通常用户需要使用手机,因此会影响到用户的使用体验。
而本申请中,为了解决手机卡顿、发烫的问题,字节码编译模块选择不再触发执行系统升级场景下原本需要对至少部分未优化应用执行的优化编译操作,即取消执行系统升级场景下需要对至少部分未优化应用执行的优化编译操作,或者,直接延迟执行字节码编译模块中原本将要在系统升级场景下需要对至少部分未优化应用执行的优化编译操作,直到满足处于设备空闲状态的条件时触发执行。在直接延迟执行字节码编译模块中原本将要在系统升级场景下需要对至少部分未优化应用执行的优化编译操作,直到满足处于设备空闲状态的条件时触发执行这一情况下,
需要说明的是,本申请实施例仅是以系统升级场景为例,其他的手机更新场景,例如应用安装、应用更新等场景,同样也需要对许多未优化应用执行优化编译操作,因此本申请实施例中的未优化应用也可以指的是其他更新场景下需要进行优化编译操作的应用。而在应用安装和应用更新场景时,还可以不执行步骤S501。而在系统升级场景下,步骤S501也不需要每一次执行图5示出的实施例时都重复执行,步骤S501是一个预操作,在预先执行一次之后,后续仅在有应用冷启动时,触发执行步骤S502以及步骤S502之后的步骤,而不需要每一次进行优化编译操作时都执行步骤S501。
还需要说明的是,本申请实施例中,字节码编译模块对系统升级场景下需要对至少部分未优化应用执行的优化编译操作进行延迟时,除了可以选择用设备处于空闲状态作为触发条件,也可以选择其他的条件作为延迟后的触发条件,触发条件可以有一个或多个。除了上述提及的触发条件可触发执行延迟的优化编译操作,后续在步骤S501之后所提及到的检测到未优化应用冷启动时,也同样可以触发执行延迟的优化编译操作,具体可参见下述对步骤S501之后的步骤的描述。
S502、应用冷启动,向应用管控模块发送应用的冷启动消息。
冷启动指的是当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。在一些实施例中,应用冷启动可以通过用户触发。用户通过点击开启应用的方式,触发了应用的冷启动。在另一些实施例中,应用冷启动也可以是由手机自动触发的。例如,某些用户设置开机后自动启动一些应用,则这些应用就会自动触发冷启动。也可以是用户点击某个应用时,关联启动了其他应用,其他应用自动触发了冷启动。
应用冷启动过程中,应用会判断应用是否具有有效的优化文件,如果没有有效的优化文件,就加载执行应用的dex文件,如果有有效的优化文件,就加载应用的优化文件。在系统升级场景下,若某个原本在系统升级场景下需要做优化编译操作的应用,因为步骤S501预先将该应用的优化编译操作延迟或取消了,那么该应用在系统升级场景下首次冷启动时,应用就会判断出此时不具有有效的优化文件,进而加载dex文件。同时,该应用首次冷启动,会触发执行步骤S502至步骤S505,在执行到步骤S505时,会判断出该应用为未优化应用。应用判断应用是否具有有效的优化文件,以及触发步骤502的顺序可以是同时,也可以有先后顺序,不序限定。
应用的冷启动消息中携带有应用标识,该标识可以是应用的包名和应用在手机中的路径信息等等应用唯一特有的信息,或者该标识可以是应用在手机中的路径信息。在一些实施例中,应用的冷启动消息还携带有冷启动标识。
在一些实施例中,应用的冷启动消息可以是主动在冷启动后发送给应用管控模块的,也可以是应用管控模块主动轮询应用的启动状态消息,然后应用再在冷启动后,回复应用管控模块应用的冷启动消息。
在一些实施例中,应用管控模块可以通过增加的启动消息接口,接收应用发送的启动状态消息,接收到应用的冷启动消息后,应用管控模块即可检测出该应用冷启动了,进而可继续执行后续的步骤S503。例如,应用冷启动后,应用通过安卓binder通信机制传输冷启动消息至应用模块新增加的启动消息接口。
在一些实施例中,应用产生了任何启动状态消息,例如冷启动,热启动等,均可以向应用管控模块发送,但在本申请实施例中,应用管控模块只在接收到冷启动消息时再进行后续的处理。在另一些实施例中,应用可以仅在产生了冷启动消息时,才向应用管控模块发送,其余启动状态消息时不向应用管控模块发送。由于本申请实施例中,若应用为未优化应用,则在应用首次冷启动时,就触发了对应用进行了优化编译操作,后续该应用再次冷启动时,则不会再是未优化应用,因此也不需要发送冷启动消息给应用管控模块,由应用管控模块再来决定是否触发对该应用执行优化编译操作。其中,首次冷启动指的是在系统升级场景下应用首次产生的冷启动。
S503、应用管控模块向Runtime请求获取应用的优化文件状态信息。
在接收到应用发送的冷启动消息后,应用管控模块响应该冷启动消息,向Runtime请求获取该应用的优化文件状态信息。应用管控模块向Runtime请求获取应用的优化文件状态信息的目的是为了知道应用的优化文件是否因系统升级而导致无效。应用的优化文件状态信息可说明应用的优化文件是否因系统升级而导致无效。应用管控模块在执行步骤S503时所发的请求中,需携带有该应用标识,具体可以是应用的包名或者应用的路径信息。
应用冷启动时,运行在手机的Runtime中,Runtime由此获取到了应用的所有信息,当中也包括了用于说明应用的优化文件是否因系统升级而导致无效的优化文件状态信息。其中,优化文件无效具体包括有优化文件过时、优化文件不存在等情况。
在一些实施例中,应用管控模块可以通过调用Runtime增加的优化文件状态接口,并向优化文件状态接口传入该应用标识参数的方式,实现向Runtime请求询问该应用的优化文件是否因系统升级而导致过时,Runtime则会从优化文件状态接口中输出携带有询问结果的应用的优化文件状态信息给应用管控模块,应用管控模块通过该优化文件状态信息中的询问结果,即可知道应用的优化文件是否因系统升级而导致无效了。
举例说明,Runtime上的优化文件状态接口可以定义为一个函数名为“isOatBootImageOutOfDate”的函数,当应用管控模块向Runtime请求获取应用的优化文件状态信息时,则调用“isOatBootImageOutOfDate”函数,并向“isOatBootImageOutOfDate”函数传入应用的路径信息,传入的路径信息可以为字符串类型的参数。
在另一些实施例中,应用管控模块从Runtime中获取应用的优化文件状态信息的方式,可以是通过调用Runtime的优化文件状态接口,向Runtime请求获取该应用的所有优化文件状态信息,Runtime所返回给应用管理模块的优化文件状态信息中包含有该应用的优化文件是否无效,以及若该应用的优化文件无效,导致无效的原因是什么等。应用管控模块进而就可从应用的优化文件状态信息中确定出应用的优化文件是否因系统升级而导致无效。
S504、Runtime向应用管控模块发送应用的优化文件状态信息。
其中,应用的优化文件状态信息可说明应用的优化文件是否因系统升级而导致无效。
在一些实施例中,Runtime所发送的应用的优化文件状态信息通过Runtime上的优化文件状态接口输出给应用管控模块。
在一些实施例中,Runtime输出优化文件状态信息的方式为:应用管控模块向Runtime增加的优化文件状态接口传入应用的路径信息,然后Runtime根据路径信息找到该应用的优化文件,将优化文件的状态信息中的校验码与系统信息中的校验码进行比对,若比对结果为校验码不一致,则说明优化文件无效,则需要进一步通过优化文件的状态信息校验是否是因系统升级场景而导致的优化文件无效,如果校验出是因系统升级场景而导致的优化文件无效,则确定出当前的优化文件是因系统升级而导致优化文件与系统不适配(即优化文件无效),因此Runtime输出的应用的优化文件状态信息就说明了应用的优化文件是因系统升级而导致无效。
在一些实施例中,Runtime输出的优化文件状态信息可以为一个状态位。例如,用状态为1表示应用的优化文件因系统升级而导致无效,状态位0表示应用的优化文件没有因系统升级而导致无效。
S505、应用管控模块根据应用的优化文件状态信息,判断应用是否为未优化应用。
应用管控模块根据应用的优化文件状态信息,确定该应用是否为未优化应用。若应用的优化文件状态信息说明了应用的优化文件因系统升级而导致无效,则就说明该应用的优化文件需要重新进行优化编译操作,即该应用为未优化应用。若应用的优化文件状态信息说明了应用的优化文件不是因系统升级而导致过时,则说明该应用的优化文件并不是因为系统升级而导致的无效,则不为系统升级场景下的未优化应用,因此不需要对其进行优化编译操作。
若应用为未优化应用,则应用管控模块执行步骤S506,若应用不为未优化应用,则结束流程。当该应用为未优化应用时,由于该应用当前冷启动,说明该应用对于用户而言使用的优先级很高,属于用户经常需要用到的应用,因此相较于其他没有冷启动的未优化应用(其他没有冷启动的未优化应用很可能是用户根本不会使用到的应用)而言,更需要优先完成该应用的优化,即需要触发对该应用执行优化编译操作,因此需要执行步骤S506。而如果该应用不是未优化应用,说明该应用在系统升级场景下不需要优化,或者是已经完成了优化,因此可以直接结束流程。
需要说明的是,执行步骤S502至步骤S505的过程的最终目的是为了检测出是否有未优化应用冷启动,而具体检测出是否有未优化应用冷启动的过程,可以是像步骤S502至步骤S504这样,应用管控模块先确定出冷启动的应用,再判断冷启动的应用是否为未优化应用,在另一些实施例中,还可以是预先将系统升级场景下需要进行优化编译操作的应用(即未优化应用)的标识全部记录下来(即先确定出有哪些未优化应用),然后在应用冷启动时,将应用标识与预先记录下的未优化应用标识进行匹配,若匹配上了,则确定出该冷启动的应用是未优化应用。应用管控模块检测出是否存在未优化应用冷启动的方式有很多,包括但不限于本申请实施例所提出的方式。
还需要说明的是,本申请实施例仅是以系统升级场景为例,其他的手机更新场景,例如应用安装、应用更新等场景,执行步骤S502至步骤S505的原理和过程是类似的。具体的,若也需获取在其他更新场景下的优化文件状态信息,则可以通过给应用管控模块增加其他的应用文件状态接口,以接收其他更新场景下的应用的优化文件状态信息,来通过优化文件状态信息确定应用是否因其他更新场景而导致优化文件无效,进而确定出应用是否是其他更新场景下的未优化应用。
S506、应用管控模块创建优化编译线程。
优化编译线程主要用于触发执行上述应用管控模块所判断出的当前冷启动,且为未优化应用的应用。为了后续描述方便,本申请将应用管控模块通过上述步骤所判断出的冷启动的未优化应用称作目标应用。
应用管控模块创建优化编译线程之后,后续触发执行该目标应用对应的优化编译操作的整个过程都在所创建的优化编译线程中执行,因此不会影响到手机主线程的其他任务。
S507、应用管控模块对优化编译线程中的编译需求参数进行设置,得到目标应用的编译需求参数。
其中,目标应用的编译需求参数,包括:目标应用标识、以及目标应用在优化编译过程中适配的参数。目标应用在优化编译过程中适配的参数指的是执行该目标应用对应的优化编译操作过程中该目标应用的需求。例如,目标应用在优化编译过程中适配的参数可以包括执行目标应用对应的优化编译操作时所需的处理器核数、执行优化编译操作时所需的线程数、所需的编译级别(例如speed级别,verify-opt级别等等)、以及所需的终止预设时长中的至少一种参数。其中,终止预设时长为执行目标应用对应的优化编译操作的最大时长。例如,终止预设时长为55秒,则代表着执行该目标应用对应的优化编译操作时,若执行时长超过55秒,就要终止执行该目标应用对应的优化编译操作。
不同应用在优化编译过程中适配的参数可能是不同的,例如某些应用所需执行的优化编译操作的预估用时较长,就需要较多的线程数,较多的处理器核数来处理更为合适,有些应用执行的优化编译操作较为简单,预估用时较短,就只需要单线程,单个处理器核即可执行了。目标应用在优化编译过程中适配的参数可以是目标应用在优化编译过程中最适配的参数,也可以是在目标应用在优化编译过程中适配范围的参数,例如,执行目标应用对应的优化编译操作时所需的处理器核数为2核到3核,线程数为2到3线程等等。
在一些实施例中,应用管控模块通过调用目标应用对应的文件库,查看目标应用在优化编译过程中的编译需求信息,然后再通过编译需求信息,对优化编译线程中的编译需求参数进行设置,得到目标应用的编译需求参数。
在一些实施例中,目标应用的编译需求参数还可以包括:系统升级场景参数,系统升级场景参数用于说明当前有因系统升级而导致优化文件过时的应用(即未优化应用)冷启动。
S508、应用管控模块发送启动编译消息给字节码编译模块。
其中,启动编译消息中携带有步骤S507得到的目标应用的编译需求参数。应用管控模块所发送的启动编译消息用于触发字节码编译模块对目标应用执行优化编译操作。
S509、字节码编译模块将目标应用的编译需求参数添加到未优化管控队列中。
字节码编译模块响应启动编译消息,将目标应用的编译需求参数添加到未优化管控队列中。未优化管控队列中编译需求参数按照检测到未优化应用冷启动的时间顺序排列,即当目标应用有多个时,未优化管控队列会按照目标应用的冷启动时间顺序排列。未优化管控队列的顺序即可执行优化编译操作的顺序,即冷启动时间越早的目标应用,会越是优先执行该目标应用的优化编译操作。
在一些实施例中,字节码编译模块会将目标应用的编译需求参数进行打包,并对打包后的参数以目标应用标识来标记,然后再将其加入至未优化管控队列。在另一些实施例中,也可以不对目标应用的编译需求参数进行打包,直接将其加入至未优化管控队列。
在一些实施例中,如果目标应用是应用管控模块首个检测出的冷启动的未优化应用,则在执行步骤S509之前,字节码编译模块内可能还未存在未优化管控队列,因此还需要先创建出一个未优化管控队列,然后再将目标应用的编译需求参数添加到未优化管控队列中。而后续字节码编译模块再接收到其他目标应用的编译需求参数时,就不需要再创建未优化管控队列了,只需要将其他目标应用的编译需求参数按照冷启动时间顺序加入至未优化管控队列中即可。
S510、字节码编译模块检测当前是否处于设备繁忙状态。
设备繁忙状态指的是设备繁忙程度超过预设标准的状态。而预设标准可以依据经验设定。例如可以将手机不处于灭屏状态,或者手机的电量小于50%定为预设标准,当手机不处于灭屏状态,或者手机的电量小于50%,就认为手机是处于设备繁忙状态的,而手机处于灭屏状态,且手机的电量大于或等于50%时,就认为手机不处于设备繁忙状态。需要说明的是,手机不处于设备繁忙状态,也不一定等同于手机处于上述提及的设备空闲状态。设备空闲状态的评判标准与设备繁忙状态的评判标准可以不一致。
在一些实施例中,手机当前的所有系统状态信息都可以通过应用管控模块读取到,因此,执行步骤S501时,字节码编译模块可以通过应用管控模块去读取当前的系统状态信息,以确定出当前是否处于设备繁忙状态。
若当前处于设备繁忙状态,则执行步骤S511,若当前不处于设备繁忙状态,则执行步骤S512。
需要说明的是,在一些实施例中,也可以不对当前是否处于设备繁忙状态做检测,即不执行步骤S510,而是在执行完步骤S509之后,直接进入步骤S512。
S511、字节码编译模块延迟运行未优化管控队列,并在延迟第一预设时长之后,返回执行步骤S510。
当处于设备繁忙状态时,若继续触发执行各种优化编译操作,就可能会造成手机卡顿发糖,因此需延迟运行未优化管控队列,并在延迟第一预设时长之后,重新检测是否处于设备繁忙状态,即保障仅在不处于设备繁忙状态时,运行未优化管控队列。在一些实施例中,第一预设时长可以按照经验进行设定。
运行未优化管控队列,指的是按照各个应用的编译需求参数的排列顺序,挨个对应用执行下述步骤S512。具体的,本申请实施例会在下述步骤S512中,以目标应用为例描述具体的运行过程。
S512、字节码编译模块当前未优化管控队列运行到目标应用的编译需求参数时,则获取设备状态参数。
设备状态参数可以反映设备当前的繁忙程度。设备状态参数中可以包括说明当前哪些处理器核最为繁忙,哪些处理器核空闲,哪些线程当前任务较少,哪些线程当前任务较多,当前是否处于灭屏状态等一种或多种信息。
在一些实施例中,字节码编译模块通过自身创建的广播接收器接收系统广播的设备状态参数。
S513、字节码编译模块通过目标应用的编译需求参数和设备状态参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数。
目标应用的编译操作参数用于说明执行目标应用对应的优化编译操作时的操作方式。即对目标应用执行优化编译操作时,是按照配置后的目标应用的编译操作参数所说明的操作方式来执行的。
而配置后的目标应用的编译操作参数是根据目标应用的编译需求参数和设备状态参数,即配置后的目标应用的编译操作参数是同时兼顾了目标应用的需求以及手机当前的状态所确定出的当前最优的目标应用的编译操作参数,能够最小化对目标应用执行优化编译操作时所给手机带来的不好的影响。
在一些实施例中,配置后的目标应用的编译操作参数可以包括:执行目标应用对应的优化编译操作时使用的处理器核、执行优化编译操作时的线程数、编译级别、以及终止预设时长中的至少一种参数。例如,执行步骤S513的过程可以是,字节码编译模块所获取到的目标应用的编译需求参数说明了目标应用的编译级别为verify-opt级别(verify-opt级别用于指示需要校验目标应用的部分或全部函数是否合法),执行目标应用对应的优化编译操作时所需的处理器核数为2核,线程数为2,预设终止时长为55秒,设备状态参数则说明了当前第一处理器核繁忙,第二处理器核和第三处理器核较为空闲,,因此,在配置目标应用的编译操作参数,就可以配置执行目标应用对应的优化编译操作时使用的处理器核为第二处理器核和第三处理器核,执行优化编译操作时的线程数为2,编译级别为Speed,终止预设时长为55秒。
需要说明的是,通过字节码编译模块通过目标应用的编译需求参数和设备状态参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数,仅仅是得到配置后的目标应用的编译操作参数的方式之一,在一些实施例中,也可以是只通过目标应用的编译需求参数来配置目标应用的编译操作参数,还可以是只通过设备状态参数来配置目标应用的编译操作参数,甚至可以不对目标应用的编译操作参数进行任何配置,即为了使触发优化编译操作的方式更为简单,也可以是让所有应用都使用预配置好的标准的编译操作参数,不再进行个性化的配置。
S514、字节码编译模块使用配置后的目标应用的编译操作参数,调用Runtime中的dex2oat函数。
具体的,字节码编译模块将配置后的目标应用的编译操作参数传入至调用的dex2oat中,以使得Runtime在执行dex2oat时,能够按照配置后的目标应用的编译操作参数所说明的操作方式来执行。
而字节码编译模块在调用Runtime中的dex2oat时,还必须使用到目标应用标识进行调用dex2oat函数,以便Runtime在执行dex2oat时能够明确是对哪一个应用执行优化编译操作。在一些实施例中,在调用Runtime中的dex2oat函数时,也不一定需要使用配置后的目标应用的编译操作参数,例如如果将所有的操作方式都标准化,或者是所有应用的编译操作参数都进行了预配置并保存在Runtime中,则字节码编译模块在调用dex2oat时,就不需要使用配置后的目标应用的编译操作参数,只需传入目标应用标识至dex2oat函数即可。
在一些实施例中,字节码编译模块将步骤S513得到的配置后的目标应用的编译操作参数后,先对配置后的目标应用的编译操作参数以及目标应用标识,调用字节码编译模块中的installed模块来进行解析,以解析成能在Runtime中运行的格式。例如,调用installed模块来进行解析的方式可以为:调用installed模块中的RunDex2Oat等函数,来解析配置后的目标应用的编译操作参数以及目标应用标识。然后再使用解析好的配置后的目标应用的编译操作参数以及目标应用标识,调用Runtime中的dex2oat函数,即将编译好的配置后的目标应用的编译操作参数传输至dex2oat函数中,触发Runtime对目标应用执行dex2oat。
需要说明的是,通过调用Runtime中的dex2oat函数的方式触发执行目标应用对应的优化编译操作仅是其中的一种实施方式,也可以通过其他的方式来触发执行目标应用对应的优化编译操作。
还需要说明的是,步骤S506至步骤S514仅仅是触发执行目标应用对应的优化编译操作的一种实施方式,在一些实施例中,也可以是在步骤S505判断出应用为未优化应用之后,直接使用目标应用的包名去触发执行目标应用对应的优化编译操作,而不需要通过步骤S506至步骤S514的操作来进行目标应用的编译操作参数的配置,然后再使用配置后的目标应用的编译操作参数来触发执行目标应用对应的优化编译操作。即对目标应用的编译操作参数进行配置仅是一种可选地操作,而不是必须的操作。而步骤S506至步骤S514中通过未优化管控队列的方式来实现配置目标应用的编译操作参数的过程同样也是可选地,也存在其他的方式来实现配置目标应用的的编译操作参数,并不一定要通过未优化管控队列的方式来实现。
S515、Runtime将目标应用对应的dex格式文件编译为oat格式文件。
Runtime被调用dex2oat函数后,按照配置后的目标应用的编译操作参数所说明的操作方式,将目标应用对应的dex格式文件编译为oat格式文件,实现对目标应用执行优化编译操作,如果执行过程没有出现错误,最终会生成了目标应用的新的优化文件,将生成的目标应用的新的优化文件存储到目标应用的安装路径下,更新或者替换掉原本在目标应用安装路径下的优化文件,完成目标应用的优化文件的更新,通过步骤S515操作最终得到的目标应用的优化文件不再因系统升级场景无效。
后续目标应用再次执行冷启动过程中,目标应用首先在判断目标应用的优化文件是否有效时,会判断出目标应用的优化文件有效,然后加载目标应用的优化文件(即加载目标应用的oat格式的文件),此时目标应用的启动速度、运行性能、以及执行速度等性能已经得到了优化,即用户使用目标应用时,目标应用的性能已是优化后的性能。而本申请实施例中,在应用冷启动,触发执行步骤S502至S505,再次执行到步骤S505时,即再次判断目标应用是否为未优化应用时,就会得到目标应用不是未优化应用的一个判断结果,然后结束图5示出的流程。再次冷启动后的目标应用,由于优化文件已经完成了更新,因此能够适配升级后的系统,不再需要进行优化编译操作。在一些实施例中,如果应用管控模块在Runtime成功完成了优化编译操作,即成功更新了目标应用的优化文件时进行了记录,那么即可在下次收到目标应用的冷启动消息时,通过查看记录,决定不再执行步骤S505。
S516、Runtime向应用管控模块发送目标应用对应的优化编译操作的执行结果。
目标应用对应的优化编译操作的执行结果用于说明是否成功生成目标应用对应的优化编译操作,即是否成功生成目标应用对应的优化文件。
Runtime在执行步骤S515的过程中有可能会因为执行时间过长,执行错误等原因导致优化编译操作执行失败,例如,若配置后的目标应用的编译操作参数中预设终止时长为55秒,而Runtime在执行步骤S515时所耗的时长超过了55秒,此时Runtime按照配置后的目标应用的编译操作参数中终止预设时长的指示,终止继续执行步骤S515,以免在执行目标应用对应的优化编译操作时耗费过多时间,影响了其他的任务,此时目标应用对应的优化编译操作因超过预设终止时长而导致了失败。因此在一些实施例中,目标应用对应的优化编译操作的执行结果除了用于说明是否成功生成目标应用对应的优化编译操作,还可以在没有成功生成目标应用对应的优化编译操作时,说明优化编译操作失败的原因,后续进行维护的时候,可以通过查看优化编译操作失败的原因来进行相应的维护。
S517、应用管控模块结束优化编译线程。
应用管控模块可在接收到目标应用对应的优化编译操作的执行结果时,认为目标应用对应的优化编译操作已结束,因此可结束优化编译线程。
在一些实施例中,应用管控模块优化编译线程的整个执行过程可以被记录在优化编译日志中,后续通过优化编译日志可以查看出优化编译过程中是否存在有漏洞,以进行修复维护。
需要说明的是,步骤S516和步骤S517也是本申请实施例中非必要的操作,在另一些实施例中,Runtime可以不向应用管控模块发送目标应用对应的优化编译操作的执行结果,应用管控模块也可以是在发送启动编译消息给字节码编译模块后就自动结束了优化编译线程,或者是在创建优化编译线程之后的第二预设时长之后,自动结束了优化编译线程。
还需要说明的是,在本申请实施例所示出的系统升级场景下,是将未优化应用冷启动作为触发条件,在一些其他实施例中,触发执行应用的优化编译操作的触发条件可以不仅仅是未优化应用冷启动。例如在应用安装、应用更新这些其他的更新场景下,可以将应用管控模块检测到应用安装以及检测到应用更新时,作为触发对安装的应用进行优化编译操作的触发条件。
通过图5示出的实施例可看出,步骤S501中所取消或延迟的系统更新场景下需要对至少部分未优化应用执行的优化编译操作,是在应用管控模块检测到未优化应用冷启动时,再触发执行目标应用(即检测到的冷启动的未优化应用)的优化编译操作的。由于冷启动的未优化应用,能够说明是用户经常所需要使用到的应用,因此将未优化应用冷启动作为优化编译操作的触发条件,能够在通过取消或延迟的系统更新场景下需要对至少部分未优化应用执行的优化编译操作来解决手机卡顿发烫现场的同时,兼顾了用户在使用应用时的性能体验。
图6为本申请实施例提供的一种应用优化方法流程示意图二。如图6所示,该应用优化方法可以包括:
S601、字节码编译模块预先将系统升级场景下需要对至少部分未优化应用执行的优化编译操作进行取消,或延迟至满足处于设备空闲状态的条件时触发执行。
步骤S601的原理和执行过程与步骤S501相同,此处不再赘述。
S602、应用冷启动,向应用管控模块发送应用的冷启动消息。
步骤S602的原理和执行过程与步骤S502相同,此处不再赘述。
S603、应用管控模块向Runtime请求获取应用的优化文件状态信息。
步骤S603的原理和执行过程与步骤S503相同,此处不再赘述。
S604、Runtime向应用管控模块发送应用的优化文件状态信息。
步骤S604的原理和执行过程与步骤S504相同,此处不再赘述。
S605、应用管控模块根据应用的优化文件状态信息,判断应用是否为未优化应用。
步骤S605的原理和执行过程与步骤S505相同,此处不再赘述。
S606、应用管控模块创建优化编译线程。
步骤S606的原理和执行过程与步骤S506相同,此处不再赘述。
S607、应用管控模块对优化编译线程中的编译需求参数进行设置,得到目标应用的编译需求参数。
步骤S607的原理和执行过程与步骤S507相同,此处不再赘述。
S608、应用管控模块发送启动编译消息给字节码编译模块。
步骤S608的原理和执行过程与步骤S508相同,此处不再赘述。
S609、字节码编译模块将目标应用的编译需求参数传入服务调度器中。
在一些实施例中,服务调度器是在接收到启动编译消息后,专门针对目标应用进行创建的,即服务调度器中仅传入目标应用的编译需求参数,若有其他应用的启动编译消息发送给了字节码编译模块,字节码编译模块则针对其他应用,重新再创建一个服务调度器,然后再将其他应用的编译需求参数传入。
在另一些实施例中,服务调度器仅在首次接收到启动编译消息时创建,后续再接收到启动编译消息时,不再进行创建。因此,服务调度器中被传入的编译需求参数也可能并不是只有属于目标应用的,若也有接收到其他应用的启动编译消息,那么服务调度器内也有传入其他应用的编译需求参数。
S610、字节码编译模块通过服务调度器在满足不处于设备繁忙状态的条件时,触发通过目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数。
在一些实施例中,字节码编译模块将不处于设备繁忙状态作为步骤S609所提及的服务调度器的触发条件,以使得服务调度器仅在满足不处于设备繁忙状态的条件时,触发通过目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数。
在一些实施例中,若字节码编译模块针对不同的应用分别创建了服务调度器,则在所有服务调度器设置的触发条件一致时,按照创建服务调度器的先后顺序来执行步骤S610。若字节码编译模块是将多个应用的编译需求参数都传入在同一个服务调度器中,那么就是按传入参数的先后顺序(即字节码编译模块接收到启动编译消息的先后顺序)来执行步骤S610。
而步骤S610中所提及的设备繁忙状态与图5中是一致的,且通过目标应用的编译需求参数,配置目标应用的编译操作参数,得到配置后的目标应用的编译操作参数的原理和执行过程也与图5中是一致的,此处不再赘述。
S611、字节码编译模块使用配置后的目标应用的编译操作参数,调用Runtime中的dex2oat函数。
在一些实施例中,步骤S611可通过上述步骤S610中提及的服务调度器来实现,即将步骤S611相关的程序写入上述步骤S611提及的服务调度器中运行。
步骤S611的执行过程和原理与步骤S514相同,此处不再赘述。
S612、Runtime将目标应用对应的dex格式文件编译为oat格式文件。
步骤S612的执行过程和原理与步骤S515相同,此处不再赘述。
S613、Runtime向应用管控模块发送目标应用对应的优化编译操作的执行结果。
步骤S613的执行过程和原理与步骤S516相同,此处不再赘述。
S614、应用管控模块结束优化编译线程。
步骤S614的执行过程和原理与步骤S517相同,此处不再赘述。
本申请的一些实施例还提供了一种电子设备,如图7所示,该电子设备可以包括:触摸屏701,其中,所述触摸屏701可以包括触敏表面706和显示屏707;一个或多个处理器702;存储器703;以及一个或多个计算机程序704,上述各器件可以通过一个或多个通信总线705连接。其中该一个或多个计算机程序704被存储在上述存储器703中,并被配置为被该一个或多个处理器702执行,该一个或多个计算机程序704包括指令,上述指令可以用于执行如图5和图6相应实施例中手机执行的各个步骤。当然,图7所示的电子设备还可以包括如传感器模块、音频模块以及SIM卡接口等其他器件,本申请实施例对此不做任何限制。当图7所示的电子设备还包括如传感器模块、音频模块以及SIM卡接口等其他器件时,其可以为图3所示的电子设备。
本申请实施例可以根据上述方法示例对电子设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图8示出了应用优化装置的一种可能的组成示意图,该应用优化装置能执行本申请各方法实施例中任一方法实施例中电子设备所执行的步骤。如图8所示,所述应用优化装置为电子设备或支持电子设备实现实施例中提供的方法的通信装置,例如该通信装置可以是芯片系统。该应用优化装置可以包括:处理单元801、显示单元802和收发单元803。
其中,处理单元801,用于支持应用优化装置执行本申请实施例中描述的方法。例如,处理单元801,用于执行或用于支持应用优化装置执行图5所示的应用优化方法,以及图6所示的应用优化方法。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本申请实施例提供的应用优化装置,用于执行上述任意实施例的方法,因此可以达到与上述实施例的方法相同的效果。
本实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中包括指令,当上述指令在电子设备上运行时,使得该电子设备执行图5和图6中的相关方法步骤,以实现上述实施例中的方法。
本实施例还提供了一种包含指令的计算机程序产品,当该计算机程序产品在电子设备上运行时,使得该电子设备执行如图5和图6中的相关方法步骤,以实现上述实施例中的方法。
本实施例还提供了一种控制设备,所述控制设备包括处理器和存储器,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述处理器执行所述计算机指令时,所述控制设备执行如图5和图6中的相关方法步骤实现上述实施例中的方法。该控制设备可以是一个集成电路IC,也可以是一个片上系统SOC。其中集成电路可以是通用集成电路,也可以是一个现场可编程门阵列FPGA,也可以是一个专用集成电路ASIC。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本实施例所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (24)
1.一种应用优化方法,其特征在于,包括:
将更新场景下需要对至少部分未优化应用执行的优化编译操作进行取消或延迟;所述未优化应用为更新场景下需要进行优化编译操作的应用;
检测是否存在未优化应用冷启动;
若检测到存在未优化应用冷启动,则触发执行目标应用对应的优化编译操作;所述目标应用为检测到的冷启动的未优化应用。
2.如权利要求1所述的应用优化方法,其特征在于,所述检测是否存在未优化应用冷启动,包括:
若检测到应用冷启动,则判断所述应用是否为未优化应用;
若判断所述应用为未优化应用,则确定出存在未优化应用冷启动;
若判断出所述应用不为未优化应用,则确定出不存在未优化应用冷启动。
3.如权利要求2所述的应用优化方法,其特征在于,所述若检测到应用冷启动,则判断所述应用是否为未优化应用,包括:
若检测到应用冷启动,则确定所述冷启动的应用对应的优化文件是否因更新场景而导致无效;
若所述冷启动的应用对应的优化文件因更新场景而导致无效,则确定出所述冷启动的应用是未优化应用;
若所述冷启动的应用对应的优化文件不因更新场景而导致无效,则确定出所述冷启动的应用不是未优化应用。
4.如权利要求1至3所述的任一应用优化方法,其特征在于,所述若检测到存在未优化应用冷启动之后,还包括:
创建优化编译线程;
对所述优化编译线程中的编译需求参数进行设置,得到目标应用的编译需求参数;所述目标应用的编译需求参数,包括:所述目标应用标识、以及所述目标应用在优化编译过程中适配的参数;
基于所述目标应用的编译需求参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数;所述目标应用的编译操作参数用于表示执行所述目标应用对应的优化编译操作时的操作方式;
所述触发执行目标应用对应的优化编译操作,包括:
使用所述配置后的目标应用的编译操作参数,触发执行所述目标应用对应的优化编译操作。
5.如权利要求4所述的应用优化方法,其特征在于,所述配置后的目标应用的编译操作参数,包括:执行所述目标应用对应的优化编译操作时使用的处理器核、执行优化编译操作时的线程数、编译级别、以及终止预设时长中的至少一种参数;所述终止预设时长为执行所述目标应用对应的优化编译操作的最大时长。
6.如权利要求4所述的应用优化方法,其特征在于,所述基于所述目标应用的编译需求参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数之前,还包括:
将所述目标应用的编译需求参数添加到未优化管控队列中;所述未优化管控队列中编译需求参数按照检测到未优化应用冷启动的时间顺序排列;
检测当前是否处于设备繁忙状态;
若检测到当前处于所述设备繁忙状态,则延迟运行所述未优化管控队列,并在延迟第一预设时长之后,返回执行所述检测当前是否处于设备繁忙状态步骤;
所述基于所述目标应用的编译需求参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数,包括:
若检测到当前不处于设备繁忙状态,且当前所述未优化管控队列运行到所述目标应用的编译需求参数,则基于所述目标应用的编译需求参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数。
7.如权利要求4所述的应用优化方法,其特征在于,所述基于所述目标应用的编译需求参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数之前,还包括:
将所述目标应用的编译需求参数传入服务调度器中;
所述基于所述目标应用的编译需求参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数,包括:
通过所述服务调度器在满足不处于设备繁忙状态的条件时,触发执行基于所述目标应用的编译需求参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数。
8.如权利要求4所述的应用优化方法,其特征在于,所述基于所述目标应用的编译需求参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数之前,还包括:
获取设备状态参数;
所述基于所述目标应用的编译需求参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数,包括:
基于所述目标应用的编译需求参数和所述设备状态参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数。
9.如权利要求4所述的应用优化方法,其特征在于,所述使用所述配置后的目标应用的编译操作参数,触发执行所述目标应用对应的优化编译操作之后,还包括:
接收所述目标应用对应的优化编译操作的执行结果,并结束所述优化编译线程。
10.如权利要求1至3所述的任一应用优化方法,其特征在于,所述执行目标应用对应的优化编译操作,包括:
通过调用dex2oat执行目标应用对应的优化编译操作。
11.如权利要求10所述的应用优化方法,其特征在于,所述通过调用dex2oat执行目标应用对应的优化编译操作,包括:
通过调用dex2oat,将目标应用对应的dex格式文件编译为oat格式文件。
12.如权利要求1至3所述的任一应用优化方法,其特征在于,所述将更新场景下需要对未优化应用执行的部分优化编译操作进行延迟之后,还包括:
通过服务调度器在满足处于设备空闲状态的条件时,触发执行延迟的优化编译操作。
13.如权利要求12所述的应用优化方法,其特征在于,所述满足处于设备空闲状态的条件为灭屏、电量大于预设电量值、且处于充电状态。
14.一种应用优化方法,其特征在于,应用于电子设备,所述电子设备安装有应用,所述电子设备包括:应用管控模块、字节码编译模块和Runtime,所述方法包括:
所述字节码编译模块将更新场景下需要对至少部分未优化应用执行的优化编译操作进行取消或延迟;所述未优化应用为更新场景下需要进行优化编译操作的应用;
所述应用管控模块接收所述应用发送的冷启动消息,所述冷启动消息中携带有应用标识和冷启动标识;
响应所述冷启动消息,所述应用管控模块确定所述应用是否为未优化应用;
若确定出所述应用为未优化应用,所述应用管控模块触发所述Runtime执行对所述应用的优化编译操作。
15.如权利要求14所述的应用优化方法,其特征在于,所述应用管控模块确定所述应用是否为未优化应用包括:
所述应用管控模块向所述字节码编译模块请求获取所述应用的优化文件状态信息;所述请求中携带有所述应用标识;
所述Runtime向所述应用管控模块发送所述应用的优化文件状态信息;所述应用的优化文件状态信息用于表示所述应用的优化文件是否因系统升级而导致无效;
若所述应用的优化文件状态信息表示所述应用的优化文件因系统升级而导致无效,则所述应用管控模块确定出所述应用为未优化应用;
若所述应用的优化文件状态信息表示所述应用的优化文件不是因系统升级而导致无效,则所述应用管控模块确定出所述应用不为未优化应用。
16.如权利要求14或15所述的应用优化方法,其特征在于,所述应用管控模块触发所述Runtime执行对所述应用的优化编译操作,包括:
所述应用管控模块创建优化编译线程;
所述应用管控模块对所述优化编译线程中的编译需求参数进行设置,得到目标应用的编译需求参数;所述目标应用的编译需求参数,包括:所述目标应用标识、以及所述目标应用在优化编译过程中适配的参数;
所述应用管控模块向所述字节码编译模块发送启动编译消息;所述启动编译消息携带有所述目标应用的编译需求参数;
响应所述启动编译消息,所述字节码编译模块基于所述目标应用的编译需求参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数;所述目标应用的编译操作参数用于表示执行所述目标应用对应的优化编译操作时的操作方式;
所述字节码编译模块使用所述配置后的目标应用的编译操作参数,触发所述Runtime执行对所述应用的优化编译操作。
17.如权利要求16所述的应用优化方法,其特征在于,所述配置后的目标应用的编译操作参数,包括:执行所述目标应用对应的优化编译操作时使用的处理器核、执行优化编译操作时的线程数、编译级别、以及终止预设时长中的至少一种参数;所述终止预设时长为执行所述目标应用对应的优化编译操作的最大时长。
18.如权利要求16所述的应用优化方法,其特征在于,所述字节码编译模块基于所述目标应用的编译需求参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数之前,还包括:
所述字节码编译模块将所述目标应用的编译需求参数添加到未优化管控队列中;所述未优化管控队列中编译需求参数按照检测到未优化应用冷启动的时间顺序排列;
所述字节码编译模块检测当前是否处于设备繁忙状态;
若检测到当前处于所述设备繁忙状态,则所述字节码编译模块延迟运行所述未优化管控队列,并在延迟第一预设时长之后,返回执行所述检测当前是否处于设备繁忙状态步骤;
所述字节码编译模块基于所述目标应用的编译需求参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数,包括:
所述字节码编译模块若检测到当前不处于设备繁忙状态,且当前所述未优化管控队列运行到所述目标应用的编译需求参数,则基于所述目标应用的编译需求参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数。
19.如权利要求16所述的应用优化方法,其特征在于,所述字节码编译模块基于所述目标应用的编译需求参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数之前,还包括:
所述字节码编译模块将所述目标应用的编译需求参数传入服务调度器中;
所述字节码编译模块基于所述目标应用的编译需求参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数,包括:
所述字节码编译模块通过所述服务调度器在满足不处于设备繁忙状态的条件时,触发执行基于所述目标应用的编译需求参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数。
20.如权利要求16所述的应用优化方法,其特征在于,所述字节码编译模块基于所述目标应用的编译需求参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数之前,还包括:
所述字节码编译模块获取设备状态参数;
所述字节码编译模块基于所述目标应用的编译需求参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数,包括:
所述字节码编译模块基于所述目标应用的编译需求参数和所述设备状态参数,配置所述目标应用的编译操作参数,得到配置后的目标应用的编译操作参数。
21.如权利要求16所述的应用优化方法,其特征在于,所述字节码编译模块使用所述配置后的目标应用的编译操作参数,触发所述Runtime执行对所述应用的优化编译操作之后,还包括:
所述Runtime向所述应用管控模块发送所述目标应用对应的优化编译操作的执行结果;
响应所述目标应用对应的优化编译操作的执行结果,结束所述优化编译线程。
22.如权利要求14或15所述的应用优化方法,其特征在于,所述字节码编译模块将更新场景下需要对至少部分未优化应用执行的优化编译操作进行延迟之后,还包括:
所述字节码编译模块通过服务调度器在满足处于设备空闲状态的条件时,触发执行延迟的优化编译操作。
23.一种电子设备,其特征在于,包括:一个或多个处理器、存储器、显示屏、无线通信模块以及移动通信模块;
所述存储器、所述显示屏、所述无线通信模块以及所述移动通信模块与所述一个或多个处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述一个或多个处理器执行所述计算机指令时,所述电子设备执行如权利要求1至13中任一项所述的应用优化方法,或者,如权利要求14至22中任一项所述的应用优化方法。
24.一种应用优化装置,其特征在于,所述应用优化装置包括:处理单元、存储单元、显示单元、收发单元,所述存储单元用于存储一个或多个程序;所述处理单元用于执行所述一个或多个程序;所述一个或多个程序包括指令,所述指令用于执行如权利要求1至13中任一项所述的应用优化方法,或者,如权利要求14至22中任一项所述的应用优化方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210667655.9A CN115185652B (zh) | 2021-06-15 | 2021-06-15 | 应用优化方法、装置以及电子设备 |
CN202110661937.3A CN113485709B (zh) | 2021-06-15 | 2021-06-15 | 应用优化方法、装置以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110661937.3A CN113485709B (zh) | 2021-06-15 | 2021-06-15 | 应用优化方法、装置以及电子设备 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210667655.9A Division CN115185652B (zh) | 2021-06-15 | 2021-06-15 | 应用优化方法、装置以及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113485709A true CN113485709A (zh) | 2021-10-08 |
CN113485709B CN113485709B (zh) | 2022-10-14 |
Family
ID=77934820
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110661937.3A Active CN113485709B (zh) | 2021-06-15 | 2021-06-15 | 应用优化方法、装置以及电子设备 |
CN202210667655.9A Active CN115185652B (zh) | 2021-06-15 | 2021-06-15 | 应用优化方法、装置以及电子设备 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210667655.9A Active CN115185652B (zh) | 2021-06-15 | 2021-06-15 | 应用优化方法、装置以及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN113485709B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117152320A (zh) * | 2023-02-15 | 2023-12-01 | 荣耀终端有限公司 | 图像处理方法和电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567062A (zh) * | 2011-12-31 | 2012-07-11 | 成都主导软件技术有限公司 | 基于监控车辆的软件升级系统 |
US20150023162A1 (en) * | 2013-07-22 | 2015-01-22 | Seven Networks, Inc. | Extending delay tolerance of mobile applications for optimizing mobile traffic management |
CN107015816A (zh) * | 2017-05-25 | 2017-08-04 | 微鲸科技有限公司 | 操作系统升级方法、装置及一种智能终端 |
CN108037934A (zh) * | 2017-11-13 | 2018-05-15 | 维沃移动通信有限公司 | 一种应用程序更新的方法和装置 |
CN110750284A (zh) * | 2019-10-15 | 2020-02-04 | Oppo(重庆)智能科技有限公司 | 一种应用快速启动方法、终端及计算机可读存储介质 |
CN110941424A (zh) * | 2019-11-28 | 2020-03-31 | Oppo广东移动通信有限公司 | 编译参数优化方法、装置及电子设备 |
CN111475220A (zh) * | 2019-01-23 | 2020-07-31 | 阿里巴巴集团控股有限公司 | 冷启动方法、装置、电子设备及计算机存储介质 |
CN111552480A (zh) * | 2020-05-07 | 2020-08-18 | 深圳百斯特控制技术有限公司 | 跨平台编译方法、装置、设备及可读存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9189252B2 (en) * | 2011-12-30 | 2015-11-17 | Microsoft Technology Licensing, Llc | Context-based device action prediction |
CN107820605B (zh) * | 2017-03-27 | 2021-06-01 | 香港应用科技研究院有限公司 | 用于动态低延迟优化的系统和方法 |
JP6881028B2 (ja) * | 2017-05-24 | 2021-06-02 | 株式会社リコー | 画像形成装置、システムおよび制御方法 |
CN108536488B (zh) * | 2018-04-17 | 2021-12-07 | Oppo广东移动通信有限公司 | 应用启动优化方法、装置、存储介质及终端设备 |
CN112596773A (zh) * | 2020-12-31 | 2021-04-02 | 深圳市大富网络技术有限公司 | 一种应用程序的更新方法、装置、设备及存储介质 |
-
2021
- 2021-06-15 CN CN202110661937.3A patent/CN113485709B/zh active Active
- 2021-06-15 CN CN202210667655.9A patent/CN115185652B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567062A (zh) * | 2011-12-31 | 2012-07-11 | 成都主导软件技术有限公司 | 基于监控车辆的软件升级系统 |
US20150023162A1 (en) * | 2013-07-22 | 2015-01-22 | Seven Networks, Inc. | Extending delay tolerance of mobile applications for optimizing mobile traffic management |
CN107015816A (zh) * | 2017-05-25 | 2017-08-04 | 微鲸科技有限公司 | 操作系统升级方法、装置及一种智能终端 |
CN108037934A (zh) * | 2017-11-13 | 2018-05-15 | 维沃移动通信有限公司 | 一种应用程序更新的方法和装置 |
CN111475220A (zh) * | 2019-01-23 | 2020-07-31 | 阿里巴巴集团控股有限公司 | 冷启动方法、装置、电子设备及计算机存储介质 |
CN110750284A (zh) * | 2019-10-15 | 2020-02-04 | Oppo(重庆)智能科技有限公司 | 一种应用快速启动方法、终端及计算机可读存储介质 |
CN110941424A (zh) * | 2019-11-28 | 2020-03-31 | Oppo广东移动通信有限公司 | 编译参数优化方法、装置及电子设备 |
CN111552480A (zh) * | 2020-05-07 | 2020-08-18 | 深圳百斯特控制技术有限公司 | 跨平台编译方法、装置、设备及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
林莉芸 等: ""Android中的自动化集成APK优化操作"", 《科技经济市场》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117152320A (zh) * | 2023-02-15 | 2023-12-01 | 荣耀终端有限公司 | 图像处理方法和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113485709B (zh) | 2022-10-14 |
CN115185652B (zh) | 2023-07-21 |
CN115185652A (zh) | 2022-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102470275B1 (ko) | 음성 제어 방법 및 전자 장치 | |
WO2020062159A1 (zh) | 无线充电方法及电子设备 | |
CN111913750B (zh) | 一种应用程序管理方法、装置及设备 | |
CN114556294A (zh) | 一种主题切换方法以及主题切换装置 | |
CN113704205B (zh) | 日志存储的方法、芯片、电子设备和可读存储介质 | |
WO2021052204A1 (zh) | 基于通讯录的设备发现方法、音视频通信方法及电子设备 | |
CN113254409A (zh) | 文件共享方法、系统及相关设备 | |
CN113821767A (zh) | 应用程序的权限管理方法、装置和电子设备 | |
WO2021073337A1 (zh) | 安装插件的方法、装置和存储介质 | |
CN114741720B (zh) | 一种权限管理方法及终端设备 | |
CN113784331B (zh) | 更新用户身份识别模块卡系统数据的方法及装置 | |
CN113656089B (zh) | 应用程序中的类验证方法和装置 | |
CN113485709B (zh) | 应用优化方法、装置以及电子设备 | |
CN115657897A (zh) | 跨设备桌面管理方法、第一电子设备及第二电子设备 | |
CN113590346B (zh) | 处理业务请求的方法和电子设备 | |
CN113467821A (zh) | 应用程序的修复方法、装置、设备及可读存储介质 | |
CN114003241A (zh) | 应用程序的界面适配显示方法、系统、电子设备和介质 | |
CN113741911A (zh) | 功能包的加载方法、装置、服务器和电子设备 | |
CN112286596A (zh) | 消息显示方法及电子设备 | |
US12032938B2 (en) | Plug-in installation method, apparatus, and storage medium | |
CN114006969B (zh) | 一种窗口启动方法和电子设备 | |
CN116048629B (zh) | 系统服务切换方法及控制装置、电子设备和存储介质 | |
WO2024131823A1 (zh) | 免安装应用的升级方法及电子设备 | |
CN114996078A (zh) | dex文件的编译控制方法及装置 | |
CN115952564A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |