CN116662150A - 应用启动耗时检测方法及相关装置 - Google Patents
应用启动耗时检测方法及相关装置 Download PDFInfo
- Publication number
- CN116662150A CN116662150A CN202211618121.3A CN202211618121A CN116662150A CN 116662150 A CN116662150 A CN 116662150A CN 202211618121 A CN202211618121 A CN 202211618121A CN 116662150 A CN116662150 A CN 116662150A
- Authority
- CN
- China
- Prior art keywords
- activity
- application
- time
- event
- electronic device
- 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
- 238000001514 detection method Methods 0.000 title claims abstract description 72
- 230000000694 effects Effects 0.000 claims abstract description 285
- 238000000034 method Methods 0.000 claims abstract description 92
- 230000009471 action Effects 0.000 claims abstract description 10
- 230000006870 function Effects 0.000 claims description 33
- 238000012544 monitoring process Methods 0.000 claims description 14
- 230000008859 change Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 12
- 239000007858 starting material Substances 0.000 claims description 4
- 239000003999 initiator Substances 0.000 abstract description 5
- 230000000007 visual effect Effects 0.000 description 78
- 238000004891 communication Methods 0.000 description 37
- 230000006854 communication Effects 0.000 description 37
- 230000008569 process Effects 0.000 description 31
- 238000007726 management method Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 16
- 238000010295 mobile communication Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 12
- 230000005236 sound signal Effects 0.000 description 12
- 230000004044 response Effects 0.000 description 10
- 238000009877 rendering Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 229920001621 AMOLED Polymers 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000003416 augmentation Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 239000003990 capacitor Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000014155 detection of activity Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000005684 electric field Effects 0.000 description 2
- 239000003792 electrolyte Substances 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000002096 quantum dot Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 210000003041 ligament Anatomy 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003238 somatosensory effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000036642 wellbeing Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- 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)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Measurement Of Unknown Time Intervals (AREA)
- Manipulator (AREA)
Abstract
本申请实施例提供了应用启动耗时检测方法及相关装置,其中,该方法包括检测目标事件以及活动组件,该目标事件用于触发启动应用;在检测到的activity满足预设条件的情况下,确定该activity为目标activity,该预设条件包括活动组件的类别信息为启动器且活动组件的动作信息为主函数;将第一时刻与第二时刻之间的时间差作为该目标activity对应的应用的启动时长,该第一时刻为该目标activity的第一帧图像绘制完成的时刻,该第二时刻为该第一时刻之前距离该第一时刻最近的目标事件的检测时刻。通过本申请可以有效地检测出应用冷启动的花费的时长。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及应用启动耗时检测方法及相关装置。
背景技术
随着计算机科学技术的不断发展,例如手机等电子设备在人们日常生活中越来越常见,电子设备的功能也越来越丰富。例如,电子设备中可以安装不同类别的应用(Application,APP),可以用于购物、出行、支付以及社交等场景。
用户点击应用程序图标以启动该应用时,如果电子设备的后台没有该应用的进程,那么,电子设备将创建新的进程并分配给该应用,上述应用启动方式称为应用冷启动。冷启动过程花费的时长是衡量应用启动优劣的指标之一,因此,需要检测应用冷启动所花费的时长。
发明内容
本申请实施例提供了应用启动耗时检测方法及相关装置,通过本申请可以有效地检测出应用冷启动的花费的时长。
第一方面,本申请实施例提供了一种应用启动耗时检测方法,包括:
检测目标事件以及活动组件,上述目标事件用于触发启动应用;
在检测到的活动组件满足预设条件的情况下,确定上述活动组件为目标活动组件,上述预设条件包括活动组件的类别信息为启动器且活动组件的动作信息为主函数;
将第一时刻与第二时刻之间的时间差作为上述目标活动组件对应的应用的启动时长,上述第一时刻为上述目标活动组件的第一帧图像绘制完成的时刻,上述第二时刻为上述第一时刻之前距离上述第一时刻最近的目标事件的检测时刻。
本申请实施例中,上述目标事件可以理解为用于触发启动应用的事件,示例性地,在以点击应用程序图标的用户操作作为触发条件启动应用的情况下,上述目标事件可以理解为点击事件或者点击触控屏之后的抬手事件。
电子设备检测目标事件可以通过监控触控屏的电容值实现,示例性地,电子设备可以包括触控屏,在通过电子设备的触摸屏的电容值变化确定发生触摸事件的情况下,根据上述触摸事件的变化检测上述目标事件。其中,触摸事件可以理解为用户采用任意方式触摸到触控屏的事件,例如可以是点击、双击、长按以及双指捏合等事件。
可以理解的是,电子设备的触控屏可以为电容式触摸屏,电容式触摸屏可以包括多个电容组成的电容阵列,可选地,可以将该多个电容阵列理解为感应器。在受到外界影响后,电容阵列中的电容量(也可以理解为电容值)会发生改变。示例性地,将手指按压在电容式触摸屏上时,电容阵列可以与手指上的电解液接触而形成电场,因此,电子设备可以感知到用户手指的触摸。根据触摸事件的变化,电子设备检测上述目标事件,确定是否出现上述目标事件。
本申请实施例中,活动组件可以理解为安卓系统中的activity组件,也可以简称为activity。可以理解的是,用户点击应用程序图标触发启动该应用后,电子设备将启动activity;除了上述情况,电子设备进行界面切换也可能启动activity,例如图3中,响应于作用在账户按钮上的点击操作,电子设备从用户界面303跳转到账户界面也可能会启动activity。
电子设备检测activity可以理解为对activity进行监控,示例性地,电子设备可以监控事件日志(event log),其中,事件日志用于记录电子设备中已经启动的活动组件。因此,电子设备可以通过event log检测activity。
可以理解的是,一般地,在电子设备的使用过程中,先发生目标事件再启动activity,但是,检测目标事件与检测activity之间并不冲突,因此,本申请实施例中并不限定电子设备检测目标事件与电子设备检测activity之间的先后执行顺序。
可以理解的是,电子设备可以通过event log检测到电子设备中启动的各种activity。本申请实施例中,电子设备对检测到的activity进行识别,在检测到的活动组件满足预设条件的情况下,确定上述活动组件为目标活动组件。
可选地,上述目标活动组件也可以理解为后文实施例中的启动-activity,活动组件满足预设条件也可以理解为活动组件满足启动特征。
本实施例中,在activity的类别信息为启动器且活动组件的动作信息为主函数的情况下,电子设备可以认为activity为目标activity。其中,上述目标activity可以理解为用于计算应用冷启动耗时的activity,或者理解为用于合成启动场景的activity。示例性地,activity的类别信息为启动器也可以理解为activity的category信息为launcher,activity的动作信息为主函数也可以理解为activity的action信息为main。
在确定目标activity后,根据目标activity以及目标activity之前最近的目标事件即可得到应用的冷启动时长。可以理解的是,电子设备可以通过检测到的activity的名称确定出activity对应的应用,即检测到的activity属于哪一个应用。本申请实施例中,上述第一时刻可以理解为后文实施例中的第二参考时刻,上述第二时刻可以理解为后文实施例中的第一参考时刻,具体可以参阅后文实施例中的步骤606的描述,这里不再赘述。
本申请实施例中,通过识别满足预设条件的目标activity,将上述目标activity与目标activity之前最近的目标事件进行关联,将第一时刻与第二时刻之间的时间差作为上述目标活动组件对应的应用的启动时长,可以有效地得到从目标事件触发应用冷启动开始,到应用的第一个可视界面显示为结束之间的时长。
结合第一方面,在一种可能的实现方式中,上述方法还包括;
检测任务栈,上述任务栈用于存放活动组件;
在检测到任务栈被创建的情况下,将上述任务栈的标识设定为第一标识,上述第一标识用于表示上述任务栈对应的应用未完成启动耗时检测;
在检测到的活动组件不满足上述预设条件且上述活动组件所在的任务栈的标识为上述第一标识的情况下,确定上述活动组件为上述目标活动组件。
在安卓系统中,任务栈可以理解为用来存放activity的容器。一般地,如果当某个应用被启动时,安卓系统中不存在该应用的任务栈,那么,安卓系统会为该应用创建一个属于该应用的任务栈,该任务栈用于存放和管理该应用所启动的activity。
本实施例中,电子设备检测任务栈,在检测到有任务栈被创建的情况下,将上述任务栈的标识设定为第一标识,其中,上述第一标识用于表示上述任务栈对应的应用未完成启动耗时检测。也就是说,本实施例中,电子设备给任务栈设定标识,该标识可以理解为启动标识,在任务栈被创建之初,任务栈的标识被设定为上述第一标识,可选地,上述第一标识可以理解为后文实施例中的标识A。
本实施例中,在检测到的活动组件不满足上述预设条件的情况下,电子设备进一步对activity所在的任务栈标识进行判断,在检测到的活动组件不满足上述预设条件且上述活动组件所在的任务栈的标识为上述第一标识的情况下,电子设备可以确定上述活动组件为上述目标活动组件。
可以理解的是,某些应用可能为了规避系统管控,在应用冷启动过程中,第一个可视界面对应的不是第一个启动的activity,而是第二个启动的activity,而第二个启动的activity以及不满足预设条件,例如后文实施例中情况二的相关描述。因此,本实施例中,在activity不满足预设条件的情况下,进一步采用任务栈标识进行判断,可以覆盖更多的应用冷启动场景,有效得到更多冷启动场景中的启动时长。
结合第一方面,在一种可能的实现方式中,上述确定上述活动组件为上述目标活动组件之后,上述方法还包括;
将上述活动组件所在的任务栈的标识修改为第二标识,上述第二标识用于表示上述任务栈对应的应用已完成启动耗时检测。
本实施例中,在activity被确定为目标activity后,将该目标activity所在的任务栈的标识从第一标识修改为第二标识,其中,上述第二标识用于表示上述任务栈对应的应用已完成启动耗时检测,可选地,上述第二标识可以理解为后文实施例中的标识B。
可以理解的是,应用冷启动时长是基于目标activity得到的,在已经得到目标activity额情况下,可以认为已经确定出目标activity对应的应用的启动时长,因此,后续将不再需要计算启动时长,将目标activity所在的任务栈的标识从第一标识修改为第二标识,可以避免重复计算或者误计算应用启动时长。
结合第一方面,在一种可能的实现方式中,上述方法还包括;
在检测到的活动组件不满足上述预设条件,且上述活动组件所在的任务栈的标识为上述第二标识的情况下,确定上述活动组件不为上述目标活动组件。
本实施例中,在检测到的activity不满足上述预设条件,且上述activity所在的任务栈的标识为上述第二标识的情况下,电子设备可以认为检测到的activity对应的应用已经完成启动耗时检测,因此,电子设备确定检测到的activity不为上述目标activity。示例性地,电子设备可以过滤掉不为目标activity的一些activity。
第二方面,本申请实施例提供了一种应用启动耗时检测装置,包括:
检测单元,用于检测目标事件以及活动组件,上述目标事件用于触发启动应用;
确定单元,用于在检测到的活动组件满足预设条件的情况下,确定上述活动组件为目标活动组件,上述预设条件包括活动组件的类别信息为启动器且活动组件的动作信息为主函数;
上述确定单元,还用于将第一时刻与第二时刻之间的时间差作为上述目标活动组件对应的应用的启动时长,上述第一时刻为上述目标活动组件的第一帧图像绘制完成的时刻,上述第二时刻为上述第一时刻之前距离上述第一时刻最近的目标事件的检测时刻。
示例性地,本申请实施例中,上述检测单元和上述确定单元执行的步骤可以由处理器执行。
第三方面,本申请实施例提供一种电子设备,上述电子设备包括处理器、存储器;上述存储器与上述处理器耦合,上述存储器用于存储计算机程序代码,上述计算机程序代码包括计算机指令,上述处理器调用上述计算机指令,以使第一方面或第一方面的任意可能的实现方式中的方法被执行。
第四方面,本申请实施例提供一种芯片,包括逻辑电路和接口,上述逻辑电路和接口耦合;上述接口用于输入和/或输出代码指令,上述逻辑电路用于执行上述代码指令,以使第一方面或第一方面的任意可能的实现方式中的方法被执行。
第五方面,本申请实施例公开了一种计算机程序产品,上述计算机程序产品包括程序指令,上述程序指令当被处理器执行时,使第一方面或第一方面的任意可能的实现方式中的方法被执行。
第六方面,本申请实施例提供一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机程序,当上述计算机程序在处理器上运行时,使第一方面或第一方面的任意可能的实现方式中的方法被执行。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本身申请实施例提供的一种软件结构框图;
图2是本申请实施例提供的一种应用冷启动的流程示意图;
图3是本申请实施例提供的一种应用冷启动的界面示意图;
图4是本申请实施例提供的一种应用冷启动检测范围的示意图;
图5是本申请实施例提供的一种启动-activity满足启动特征进行应用冷启动的示意图;
图6是本申请实施例提供的一种应用启动耗时的检测方法的流程示意图;
图7是本申请实施例提供的一种启动-activity不满足启动特征进行应用冷启动的示意图;
图8是本申请实施例提供的另一种应用启动耗时的检测方法的流程示意图;
图9是本申请实施例提供的一种基于任务栈标识进行应用冷启动耗时检测的示意图;
图10是本申请实施例提供的一种电子设备100的结构示意图;
图11是本申请实施例提供的一种应用启动耗时检测系统的示意图;
图12是本申请实施例提供的又一种应用冷启动耗时检测方法的流程示意图。
具体实施方式
本申请以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括复数表达形式,除非其上下文中明确地有相反指示。还应当理解,本申请中使用的术语“和/或”是指并包含一个或多个所列出项目的任何或所有可能组合。
本申请的说明书、权利要求书及附图中的术语“第一”和“第二”等是用于区别不同对象,而不是用于描述特定顺序。还应理解,本申请实施例中,步骤前的编号是为了便于理解和方案描述而作出的,而不应该理解为对步骤执行顺序的限定。
随着计算机科学技术的不断发展,例如手机等电子设备在人们的日常生活中越来越常见,电子设备中的应用(application,APP)的种类以及功能也越来越丰富。本申请实施例中,电子设备中的应用可以是系统应用,也可以是第三方应用,本申请对此不作限定。
可以理解的是,用户点击某个应用后,电子设备将启动用户点击的应用。示例性地,应用启动可以包括应用冷启动和应用热启动。当用户点击应用以启动应用时,如果电子设备的后台没有该应用的进程,那么,电子设备将重新创建新的进程并分配给该应用,上述应用启动方式可以理解为应用冷启动。
当用户点击应用以启动应用时,如果电子设备的后台已经存在该应用的进程,电子设备不需要重新创建新的进程对应用进行启动的方式可以称为热启动。示例性地,如果应用已经被打开,但是被按下返回键、Home键等按键以回到桌面或者是其他程序的时候,再重新打开该应用时启动该应用的方式可以称为热启动。
可以理解的是,应用冷启动过程中,由于电子设备会重新出创建新的进程,因此,电子设备将先创建和初始化application类,然后再创建和初始化main activity类,其中,main activity类可以包括一系列的测量、布局以及绘制等,最后再显示在界面上。在安卓(Android)系统中,每个界面可以理解为启动后的活动(activity),activity是APP程序和用户交互的界面,因此,界面切换可以理解为activity之间的切换。
为便于理解,首先对安卓系统的分层架构进行简单介绍。示例性地,请参阅图1,图1是本身申请实施例提供的一种软件结构框图。如图1所示的分层架构将软件分成若干个层,每一层都有清晰的角色和分工,层与层之间可以通过软件接口通信。
在一些实施例中,可以将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,系统运行库层,以及内核层。对上述各个层的描述如下:
首先,应用程序层可以包括一系列应用程序包。示例性地,应用程序层的应用程序包可以包括相机、图库、日历、通话、地图、导航、浏览器、蓝牙、音乐、视频以及短信息等应用程序。
应用程序框架层可以为应用程序层中的应用程序提供应用编程接口(application programming interface,API)和编程框架。应用程序框架层可以包括一些预先定义的函数。
示例性地,应用程序框架层可以包括活动管理器(activity manager)、窗口管理器(window manager),内容提供器(content provider),视图系统(view system),电话管理器(telephony manager),资源管理器(resource manager),通知管理器(notificationmanager)等。其中:
活动管理器可以用于管理各个应用程序生命周期以及通常的导航回退功能。
窗口管理器可以用于管理窗口程序。示例性地,窗口管理器可以获取电子设备的显示屏大小,锁定屏幕,截取屏幕以及判断是否有状态栏等。
内容提供器可以用来存放和获取数据,并使这些数据可以被应用程序访问,使得不同的应用程序之间可以存取或分享数据。示例性地,上述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签以及电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备100的通信功能,例如通话状态的管理(包括接通电话,挂断电话等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。示例性地,通知管理器可以被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
系统运行库层可以包括系统库和安卓运行时(Android runtime)。其中:
安卓运行时包括核心库和虚拟机。安卓运行时负责安卓系统的调度和管理。其中,核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以理解为应用程序框架的支撑,是连接应用程序框架层与内核层的重要纽带。系统层可以包括多个功能模块,例如可以包括表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如OpenGL ES),二维图形引擎(例如:SGL)等。其中:
表面管理器可以用于对显示子系统进行管理,比如在电子设备100执行多个应用程序的情况下,负责管理显示与存取操作间的互动。表面管理器还可以用于为多个应用程序提供了二维和三维图层的融合。
媒体库可以支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如可以是MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成以及图层处理等。
二维图形引擎可以理解为二维绘图的绘图引擎。
内核层可以理解为硬件和软件之间的抽象层。内核层可以包括安全性、内存管理、进程管理、电源管理、网路协议管理以及驱动管理等系统服务。示例性地,内核层可以包括显示驱动,摄像头驱动,音频驱动以及传感器驱动等。
为了方便理解图1所示的分层在应用冷启动过程中的作用,示例性地,请参阅图2,图2是本申请实施例提供的一种应用冷启动的流程示意图。示例性地,电子设备可以包括触摸屏(touch panel,TP),内核层可以包括触TP驱动,应用程序框架层可以包括视图(view)控件,应用程序层可以包括启动(launcher)模块(也可以称为launcher组件)。
示例性地,在应用的冷启动过程中,电子设备的硬件TP执行步骤201:根据电容值的变化判断是否存在用户触摸事件。然后,在步骤201的判断结果为是的情况下,TP将用户触摸事件发送给内核层的TP驱动,在步骤201的判断结果为否的情况下,TP继续对电容值进行监控。
示例性地,电子设备的触摸屏可以是电容式触摸屏,电容式触摸屏可以包括多个电容组成的电容阵列,可选地,可以将该多个电容阵列理解为感应器。在受到外界影响后,电容阵列中的电容量(也可以理解为电容值)会发生改变。示例性地,将手指按压在电容式触摸屏上时,电容阵列可以与手指上的电解液接触而形成电场。可以理解的是,手指的指纹表面是高低不平的,因此,手指的凸起处可以与电容接触,但是手指的凹陷处则不会与电容接触,从而导致电容阵列上面不同区块的电容量差异,TP就可以感知上述差异,从确定是否存在用户触摸事件。
示例性地,上述用户触摸事件可以是用户采用任意方式触摸TP的事件,例如可以是滑动、点击、双击、长按以及双指捏合等事件。可以理解的是,在TP确定存在用户触摸事件后,将用户触摸事件发送给内核层的TP驱动,TP驱动执行步骤202:根据用户触摸事件的变化判断用户触摸类型是否为点击事件。
可以理解的是,TP驱动根据TP获取到的用户触摸事件可以确定出用户触摸类型,比如可以是点击,或者可以是双击等。示例性地,在应用冷启动过程中,可以由用户点击应用触发该应用的冷启动,因此,在TP驱动确定用户触摸类型为点击操作的情况下,将点击事件发送给视图控件。
可以理解的是,视图控件可以提供组件绘制和事件处理的方法,是Android中可视化组件的实体。本实施例中,视图控件在接收到点击事件后,执行步骤203:根据点击事件创建view。
在步骤203中的view创建完毕后,将上述点击事件发送给launcher模块,launcher模块执行步骤204:对点击事件进行响应。示例性地,可以在launcher应用中调用startactivitybyclickicon()方法处理上述点击事件。
而后,应用冷启动模块对应用进行应用冷启动。示例性地,可以在launcher模块中调用startActivity()方法启动activity,启动的activity可以使用view。
然后,通过ActivityThread.handleResumeActivity()方法调度activity的第一帧,示例性地,可以在第一帧Choreographer.doFrame()方法中调用ViewRootImpl.doTraversal()方法执行测量传递、布局传递。可以理解的是,在activity的第一帧显示在电子设备的平面上时,可以认为应用冷启动完成。
在一些实施例中,上述应用程序框架层还可以包括输入(input)子系统,示例性地,系统服务(system serve)进程中可以包括InputReader线程和InputDispatcher线程,负责读取和分发input事件。示例性地,InputReader线程负责从EventHub中读取点击事件,然后交给InputDispatcher进行事件分发;InputDispatcher线程在拿到上述点击事件之后,对事件进行包装后,寻找并分发到目标窗口。
可以理解的是,本申请实施例中,数据发送或数据接收应该理解为进程间通信,其中,进程间通信是基于函数调用实现的,而不应该理解为设备之间的数据发送或数据接收等。示例性地,进程间通信可以通过管道、信号量、消息队列、共享内存(shared memory)以及套接字(socket)等方式实现,本申请实施例对此不作限定。
为便于形象地理解上述冷启动过程,示例性地,请参阅图3,图3是本申请实施例提供的一种应用冷启动的界面示意图。
如图3所示,用户界面301可以理解为电子设备的主界面或者桌面,包括计算器、相册、日记本以及相机等应用程序的图标。示例性地,响应于作用在日记本应用上的点击操作,电子设备对该日记本应用进行冷启动。
示例性地,电子设备完成日记本应用的冷启动后,显示用户界面302。其中,用户界面302包括该日记本应用标志3021,以及文字“点滴生活美好记录”。可以理解的是,用户界面302可能会持续一段时间,比如2秒左右,然后再显示日记本应用的主界面,即用户界面303。
本申请实施例中,从用户界面302开始显示时,就可以认为日记本应用完成冷启动。因此,示例性地,从在用户界面301点击日记本应用的时刻到开始显示用户界面302的时刻之间的时间差,可以理解为日记本应用的冷启动耗时。
可以理解的是,电子设备对日记本进行冷启动之前,电子设备后台中不存在日记本应用的进程,示例性地,在用户界面301和用户界面302之间,电子设备可以按照上述图2所示的流程创建新的应用进程进行冷启动。
可以理解的是,应用冷启动完成,后台加载过程中,显示的画面可以是应用特定画面,比如是应用图标标志(logo)等,本申请对此不作限定。还应理解,如果用户从用户界面303返回桌面而没有关闭日记本应用的后台进程,当用户再次在用户界面301点击日记本应用时,电子设备将对日记本应用进行热启动,即电子设备将直接从用户界面301跳转到用户界面303,而不会显示用户界面302。
可以理解的是,不同应用的冷启动时长是不同的,为了明确应用冷启动的具体时长,需要一种方法对应用的冷启动耗时进行检测。示例性地,通过应用冷启动耗时检测方法获得应用冷启动耗时后,应用冷启动耗时可以作为指标对应用优化情况进行评估。比如优化前,冷启动应用A耗时2秒,优化后,冷启动应用A耗时1秒,明显地,优化前后都需要方法对应用冷启动具体耗时进行检测。
基于此,本申请实施例提供了一种应用启动耗时检测方法及相关装置,通过本申请可以有效地检测出应用冷启动的花费的时长。本申请实施例提供的方法可以由电子设备执行,上述电子设备可以是任意一种可执行本申请方法实施例所公开的技术方案的电子设备。
可选地,上述电子设备可以是任意能够运行安卓系统的设备,比如可以是手机、平板电脑、可穿戴智能设备等。应理解,本申请方法实施例还可以通过处理器执行计算机程序代码的方式实现。
首先,基于用户使用场景的角度介绍本申请实施例中进行冷启动检测的检测范围。
本申请实施例中,应用冷启动可以理解为以用户点击应用程序图标为起始,到应用第一个可视界面的第一帧绘制完成为结束。
本申请实施例中,可视界面可以理解为对用户可见的界面,相应地,非可视界面可以理解为对用户不可见的界面。可以理解的是,界面的切换本质上是activity的切换,因此,本申请实施例中,可视界面对应的activity可以称为可视activity,非可视界面对应的activity可以称为非可视activity。可以理解的是,activity的可视与不可视可以通过activity的属性进行定义。
可选地,上述可视界面也可以称为可视化界面,上述非可视界面也可以称为非可视化界面等。上述可视activity也可以称为可视化activity,上述非可视activity也可以称为非可视化activity,本申请对此不作限定。
为便于理解本申请实施例中的冷启动检测的检测范围,示例性地,请参阅图4,图4是本申请实施例提供的一种应用冷启动检测范围的示意图。
如图4所示,时间轴上,用户在时刻t1点击应用后的抬手,也就是说,在时刻t1发生用户点击应用后抬手事件。可选地,时刻t1可以理解为图2中TP驱动确定用户触摸类型为点击事件的时刻。
可选地,上述用户点击应用后抬手事件可以简称为点击-抬手事件,可以理解的是,由于用于应用启动的点击操作和抬手操作之间的时间间隔非常小,因此,上述点击-抬手事件也可以称为点击事件。
之后,如图4所示,电子设备在时刻t2开始应用冷启动,电子设备在时刻t3开始启动应用的第一个界面,电子设备在时刻t4开始启动转场特效,第一个可视界面的第一帧在时刻t5绘制完成。可以理解的是,第一个可视界面的第一帧绘制完成后,电子设备可以对该第一帧进行显示。
本申请实施例中,应用冷启动耗时的检测范围可以理解为检测如图4所示的时刻t1至时刻t5之间的时间差。可以理解的是,应用冷启动完成后可能会存在一段加载时间,加载完成后会显示应用的主界面,本申请实施例中,上述加载过程不属于本申请实施例的应用冷启动耗时检测范围内。
可以理解的是,实际情况下,除了用户点击应用程序图标后进行冷启动的过程中会启动新的activity之外,其他情况下也可能因为点击事件而启动新的activity。示例性地,在应用启动完成后,应用的使用过程中也可能会因为用户点击操作而进行界面切换,从而启动新的activity。
为便于理解,复用图3。在图3中,电子设备可以从用户界面301切换到用户界面302,在从用户界面301切换到用户界面302的过程中,电子设备本质上是启动用户界面302对应的activity(简称activity_1)。电子设备也可以从用户界面303切换到其他用户界面,示例性地,响应于作用在用户界面303中账户按钮上的点击操作,电子设备可以从用户界面303切换到账户界面。在从用户界面303切换到账户界面的过程中,电子设备本质上是启动账户界面对应的activity(简称activity_2)。
对于电子设备来说,activity_1和activity_2都是点击事件发生后启动的新的activity,但是,activity_1是用于应用启动的activity,而activity_2不是用于应用启动的activity。正是由于用户点击事件发生后启动新的activity并不一定为用于应用启动的activity,需要对捕获的activity进行识别,也就是说,需要识别出某个activity是否为应用冷启动过程中启动-activity。
本申请实施例中,为了便于理解和描述,后续将应用冷启动过程中的启动-activity简称为启动-activity。因此,本申请实施例中,识别启动-activity可以理解为确定某个activity是否为启动-activity,示例性地,电子设备需要识别出上述activity_1为启动-activity,而上述activity_2不是启动-activity。
可以理解的是,本申请实施例中,应用冷启动可以理解为以用户点击应用程序图标为起始,到应用第一个可视界面的第一帧绘制完成为结束。但是,实际情况下,第一个可视界面对应的可能是第一个启动的activity,也可能对应的是第二个启动的activity。
在应用程序遵循安卓规范的情况下,应用冷启动过程中,第一个可视界面是用户点击应用程序图标后第一个启动的activity。由于是第一个启动的activity,该activity具有特殊的特征,为便于理解以及描述,后续将上述特殊的特征称为启动特征。示例性地,该activity的类别(category)信息为launcher,且动作(action)信息为main。
示例性地,在安卓系统中,activity包括action信息且action信息为main,可以理解为该activity为入口activity,即在应用启动过程中应该最先启动的activity。activity包括category信息且category信息为launcher,可以理解为该activity应该被列入系统的启动器进行启动,其中lLauncher可以理解为安卓系统中的桌面启动器。
可以理解,应用冷启动完成后启动的其他activity将不再满足上述启动特征,示例性地,第二个启动的activity的标签信息里面没有上述action信息和上述category信息。因此,可以通过上述启动特征将应用冷启动过程中的启动-activity与应用冷启动完成后启动的其他activity区别开。也就是说,在启动activity满足启动特征的情况下,可以通过上述启动特征识别activity,满足上述启动特征的activity为启动-activity,不满足上述启动特征的activity不是启动-activity。
但是,某些应用可能为了规避系统管控,在应用冷启动过程中,第一个可视界面对应的不是第一个启动的activity,而是第二个启动的activity。示例性地,在应用冷启动过程中,电子设备第一个启动的activity为非可视activity,在上述非可视activity启动完成后启动的第二个activity才是可视activity,上述可视activity对应第一个可视界面。
但是,由于第一个可视界面对应的是第二个启动的activity,即上述第二个启动的activity才是真正的启动-activity,但是第二个启动的activity已经不满足启动特征。在本申请实施例中,在启动activity不满足启动特征的情况下,可以进一步借助任务栈标识来识别启动-activity。
为了便于理解,接下来分情况一和情况二对上述两种情况中应用冷启动耗时的检测方法进行介绍。
情况一:启动-activity满足启动特征。
为便于理解上述情况一的具体场景,示例性地,请参阅图5,图5是本申请实施例提供的一种启动-activity满足启动特征进行应用冷启动的示意图。
示例性地,如图5所示,用户在时刻t1点击应用程序图标后抬手,响应于用户对应用程序图标的点击操作,电子设备对该应用进行冷启动。示例性地,在应用冷启动过程中,第一个可视界面对应的是第一个启动的activity,即图5中的可视activity_1。因此,上述可视activity_1可以理解为上述启动-activity,由于启动-activity为第一个启动的activity,启动-activity满足启动特征。
示例性地,可视activity_1的第一帧在时刻t2绘制完成,可以理解为应用在时刻t2完成冷启动。本实施例中,冷启动耗时可以理解为时刻t1与时刻t2之间的时间差,电子设备可以基于上述启动特征将图5所示的可视activity_1识别为启动-activity,进而正确计算出冷启动耗时。
可选地,在应用冷启动完成后,还可以响应于用户操作进行界面切换。如图5所示,用户在时刻t1点击图标后抬手,响应于用户对图标的点击操作,电子设备切换界面。示例性地,可视activity_2的第一帧在时刻t4绘制完成,可以理解为电子设备开始显示新的界面。可以理解,可视activity_2相对于可视activity_1来说对应新的界面,但是可视activity_2并不是启动-activity。
示例性地,请参阅图6,图6是本申请实施例提供的一种应用启动耗时的检测方法的流程示意图。如图6所示,上述方法包括:
601:检测并记录目标事件。
本步骤中,电子设备检测目标事件,并记录检测到该目标事件的时刻。其中,上述目标事件可以是预定义或预先配置的事件。示例性地,在应用冷启动耗时检测中,上述目标事件可以理解为能够启动应用的事件,例如,以单击应用进行应用启动为例,上述目标事件可以是点击事件,也可以是点击后的抬手事件等。
可以理解的是,例如前文图2的相关描述,电子设备的触摸屏可以是电容式触摸屏,用户的手指触摸到上述电容式触摸屏后,电容式触摸屏可以根据不同区域的电容量差异确定用户手指的位置以及手势等,即确定用户操作是否为上述目标事件。
示例性地,电子设备可以基于TP驱动进行目标事件检测,在检测到上述目标事件后,电子设备可以记录检测到该目标事件的时刻。在一种可能的实现方式中,电子设备可以记录在时刻A检测到一次目标事件,在时刻B检测到一次目标事件,在时刻C检测到一次目标事件等。
在另一种可能的实现方式中,电子设备可以每检测到目标事件就更新目标事件的检测时间。示例性地,电子设备在时刻D检测到一次目标事件,记录目标事件的检测时间为时刻D;然后在时刻E又检测到目标事件,这时,电子设备将目标事件的检测时间从时刻D更新为时刻E,从而记录目标事件的最新检测时间。
602:检测activity。
在安卓系统中,事件日志(event log)可以理解为用于记录系统状况的日志,其中,上述系统状况包括activity的状态、电池状态等。示例性地,activity启动后,可以通过event log检测到已经启动的activity。
可选地,本申请实施例中,检测activity也可以称为捕获activity;检测到activity也可以理解为捕获到activity。
可以理解的是,不仅是在应用冷启动过程中会启动activity,界面切换也可能有新的activity启动,因此,电子设备通过监听event log捕获到的activity可能是启动-activity,也可能是其他activity。因此,本步骤中,电子设备对检测到的activity进行识别,即确定检测到的activity是否为应用冷启动的activity。
可以理解的是,虽然一般情况下是先发生目标事件再启动activity,但是,检测目标事件与检测activity之间并不冲突,因此,本申请实施例中并不限定检测目标事件与检测activity两个步骤的先后顺序。
603:判断检测到的activity是否满足启动特征。
本申请实施例中,判断检测到的activity是否满足启动特征可以理解为判断检测到的activity的类别是否为Launcher,且动作是否为main。示例性地,在检测到的activity的类别为Launcher,且检测到的activity的动作为main的情况下,电子设备可以认为检测到的activity满足启动特征,检测到的activity是启动-activity。相应地,在检测到的activity的类别不为Launcher,或者,检测到的activity的动作不为main的情况下,电子设备可以认为检测到的activity不满足启动特征,检测到的activity不是启动-activity。
在步骤603的判断结果为是的情况下,即在检测到的activity满足启动特征的情况下,电子设备执行步骤604:确定该activity为启动-activity。
在步骤603的判断结果为否的情况下,即在检测到的activity不满足启动特征的情况下,电子设备执行步骤605:确定该activity不为启动-activity。示例性的,该activity可以被认为是其他新窗口响应。
在步骤604之后,电子设备执行步骤606:计算该activity对应的应用冷启动耗时。
可以理解的是,电子设备从event log检测到应用启动的activity后,可以通过该activity的名称确定该activity对应的应用,即该activity属于哪个应用。
本申请实施例中,电子设备识别到启动-activity后,根据启动该activity之前最新的目标事件进行冷启动耗时计算。示例性地,在activity为启动-activity的情况下,电子设备将该activity与该activity启动之前最近的目标事件关联起来,可以得到启动场景。其中,上述该activity启动之前最近的目标事件的检测时刻为启动场景的时间起点,也可以称为第一参考时刻;该activity的第一帧绘制完成的时刻为启动场景的时间结束点,也可以称为第二参考时刻,上述第一参考时刻和上述第二参考时刻之间的差值可以理解为启动场景的启动时长,即该activity对应的应用冷启动耗时。
可以理解的是,在安卓系统中,对于每个activity,event log会记录activity开始启动的时刻到该activity的第一帧图像绘制完成时刻之间的时长,也就是图4所示的时刻t2至时刻t5之间的时长。应理解,event log获得上述时长也是基于时刻t2对应的时间戳以及时刻t5对应的时间戳得到的。因此,电子设备在确定检测到的activity为启动-activity后,可以对调用event log的函数进行回溯得到上述第一参考时刻,即通过函数回溯得到启动-activity的第一帧图像完成的时刻。
对于上述第二参考时刻,可以通过步骤601得到,可以理解的是,电子设备对检测到目标事件的时间进行记录,那么就可以关联到第一参考时刻之前最近的目标事件的检测时刻。或者,可以认为电子设备记录的目标事件的检测时刻是最新的,那么目标事件必然是第一参考时刻之前最近发生的。
示例性地,上述第一参考时刻和上述第二参考时刻可以是时间戳,也可以是绝对时间,只要对两者进行时间差计算时单位统一即可,本申请对此不作限定。
情况二:启动-activity不满足启动特征。
为便于理解上述情况二的具体场景,示例性地,请参阅图7,图7是本申请实施例提供的一种启动-activity不满足启动特征进行应用冷启动的示意图。
示例性地,如图7所示,用户在时刻t1点击应用程序图标后抬手,响应于用户对应用程序图标的点击操作,电子设备对该应用进行冷启动。示例性地,在应用冷启动过程中,电子设备第一个启动的activity为非可视activity,例如图7中的非可视activity。在上述非可视activity启动完成后,电子设备启动的第二个activity为可视activity,例如图7中的可视activity_1,本实施例中,第一个可视界面对应的是第二个启动的activity,因此,上述可视activity_1可以理解为上述启动-activity。可以理解,上述情况下,启动-activity为第二个启动的activity,因此,启动-activity已经不满足启动特征。
示例性地,在时刻t3,可视activity_1的第一帧绘制完成,可以理解为应用在时刻t3完成冷启动。本实施例中,冷启动耗时可以理解为时刻t1与时刻t3之间的时间差,可以基于启动特征以及任务栈(task)的标识进行activity冷启动耗时检测。
可选地,在应用冷启动完成后,还可以响应于用户操作进行界面切换。如图7所示,用户在时刻t4点击图标后抬手,响应于用户对图标的点击操作,电子设备切换界面。示例性地,可视activity_2的第一帧在时刻t5绘制完成,可以理解为电子设备开始显示新的界面。可以理解,可视activity_2相对于可视activity_1来说对应新的界面,但是可视activity_2并不是启动-activity。
在安卓系统中,任务栈可以理解为用来存放activity的容器。一般地,如果当某个应用被启动时,安卓系统中不存在该应用的任务栈,那么,安卓系统会为该应用创建一个属于该应用的任务栈,该任务栈用于存放和管理该应用所启动的activity。示例性地,应用进行冷启动时,后台没有该应用的进程,安卓系统会给需要进行冷启动的应用创建任务栈。例如,在应用采用如图7所示的方式启动activity的情况下,任务栈可以用于存放图7所示的非可视activity,可视activity_1和可视activity_2等。
示例性地,请参阅图8,图8是本申请实施例提供的另一种应用启动耗时的检测方法的流程示意图。如图8所示,上述方法包括:
801:检测并记录目标事件。
对本步骤的描述可以参阅前文步骤601,这里不再赘述。
802:检测activity。
对本步骤的描述可以参阅前文步骤602,这里不再赘述。
803:在检测到任务栈被创建的情况下,初始化任务栈的标识为标识A。
可以理解的是,在activity启动之前,任务栈已经被创建完成。本申请实施例中,在检测到有任务栈被创建的情况下,电子设备初始化任务栈的标识为标识A,其中,标识A用于表示该任务栈未完成启动耗时检测,或者,标识A也可以理解为该任务栈未上报过启动耗时检测。
示例性地,可以通过任务栈的属性给任务栈设定标识。例如,可以在任务栈对应的结构体中增加变量,该变量作为该任务栈的标识用于赋值上述标识A,或者后文中的标识B。
804:判断检测到的activity是否满足启动特征。
对本步骤的描述可以参阅前文步骤603,这里不再赘述。
在步骤804的判断结果为是的情况下,电子设备执行步骤806:将该activity所在任务栈的标识修改为标识B。
可以理解的是,在检测到的activity满足启动特征的情况下,该activity为启动-activity,电子设备将该activity所在任务栈的标识修改为标识B。其中,标识B用于表示该任务栈已完成启动耗时检测,或者,标识A也可以理解为该任务栈已上报过启动耗时检测。
步骤806之后,电子设备执行步骤807:确定该activity为启动-activity;以及执行步骤808:计算该activity对应的应用冷启动耗时。其中,对步骤807和步骤808的描述可以参阅前文步骤604和步骤606,这里不再赘述。
在步骤804的判断结果为否的情况下,电子设备执行步骤805:判断该activity所在的任务栈的标识是否为标识A。
可以理解的是,在activity不满足启动特征,但是任务栈的标识为标识A的情况下,那么可以认为该activity为第一个可视界面对应的activity,例如图7所示的activity_1,该activity为本申请实施例中进行应用冷启动耗时检测所需要的启动-activity。
可以理解的是,在activity不满足启动特征,但是任务栈的标识为标识A的情况下,那么可以认为该activity不为启动-activity,例如图7所示的activity_2,不能将该activity用于应用冷启动耗时检测。
因此,在步骤805的判断结果为是的情况下,电子设备执行步骤806、步骤807以及步骤808。
在步骤805的判断结果为否的情况下,电子设备执行步骤809:确定该activity不为启动-activity。对步骤809的描述可以参阅前文步骤605,这里不再赘述。
为了更清楚地理解图8所示的方法,示例性地,请参阅图9,图9是本申请实施例提供的一种基于任务栈标识进行应用冷启动耗时检测的示意图。
示例性地,如图9所示,时间轴(a)可以理解为用户操作及activity启动情况的时间轴,时间轴(b)可以理解为任务栈标识变更情况的时间轴。
示例性地,用户在时刻t0点击桌面空闲区域后抬手(简称事件A),其中,上述空闲区域可以理解为桌面用于放置应用图标之外的区域,电子设备检测到事件A后,可以记录事件A发生的时间(即时刻t0)。由于事件A是对桌面空闲区域的点击操作,电子设备并不会因为上述事件A启动activity,也不会创建任务栈等。
之后,用户在时刻t1点击应用程序图标后抬手(简称事件B),电子设备检测到事件B后,可以记录事件B发生的时间(即时刻t1)。并且,由于事件B是对应用程序图标的点击操作,电子设备将对应用程序进行冷启动,创建上述应用程序的任务栈。为了便于理解,后续将上述应用程序的任务栈简称为任务栈A。如图9中(b)所示,在检测到任务栈A被创建,电子设备初始化任务栈A的标识为标识A。
而后,在上述应用程序的冷启动过程中,在时刻t2启动非可视activity。即使该非可视activity满足启动特征,但是该activity是非可视的,电子设备通过event log无法捕获到该非可视activity,将不会对该非可视activity进行activity识别。
在时刻t3,可视activity_1的第一帧绘制完成,电子设备可以通过event log捕获到该可视activity_1,然后对该可视activity_1进行activity识别。对该可视activity_1进行activity识别时,该可视activity_1本身已经不满足启动特征,于是进一步判断任务栈A的标识,由于此时任务栈A的标识为标识A,意味着任务栈A未上报过应用冷启动检测,那么可视activity_1就可以认为是第一个可视界面对应的activity,即可视activity_1为启动-activity。
然后,一方面,如图9中的(b)所示,电子设备将任务栈A的标识修改为标识B;另一方面,电子设备关联时刻t3之前最近的点击事件,合成启动场景,计算启动耗时。其中,时刻t3之前最近的点击事件为事件B(而不是事件A),因此,电子设备计算时刻t2与时刻t3之间的时间差为应用启动的时长。
又示例性地,在应用的使用过程中,界面切换也触发启动了activity。例如图9中的(a)所示,用户在时刻t4点击图标后抬手(简称事件C),其中,该图标可以理解为上述应用程序启动后的界面中的图标,例如可以是图3中的用户界面303中的“账户”图标。
电子设备检测到事件C后,可以记录事C发生的时间(即时刻t4)。由于事件C是对图标的点击操作,电子设备将启动activity,但是不会创建新的任务栈,启动的activity属于上述任务栈A。示例性地,在时刻t5,可视activity_2的第一帧绘制完成,电子设备可以通过event log捕获到该可视activity_2,然后对该可视activity_2进行activity识别。对该可视activity_2进行activity识别时,该可视activity_2本身已经不满足启动特征,于是进一步判断任务栈A的标识,由于此时任务栈A的标识为标识B,意味着任务栈A已经上报过应用冷启动检测,那么可视activity_2就可以认为不是启动-activity,不再需要计算上述应用程序的冷启动耗时。
可以理解的是,后续上述应用程序有其他activity启动时,对activity的识别过程与上述可视activity_2的过程是类似的,这里不再赘述。还应理解,在上述应用程序被关闭后,上述任务栈A也将被清空,相应地,任务栈A的标识也会被清除。等下一次点击上述应用程序图标进行冷启动时,安卓系统将重新创建任务栈A,电子设备将重新对上述重新创建的任务栈A的标识进行初始化,与图9所示的流程是类似的,这里不再赘述。
以上介绍了本申请实施例提供的方法,接下来对本申请实施例涉及的电子设备进行介绍。
请参阅图10,图10是本申请实施例提供的一种电子设备100的结构示意图。
电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,加速度传感器180C,指纹传感器180D,温度传感器180E,触摸传感器180F,环境光传感器180G等。
可理解地,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图10所示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图10所示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器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)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180F,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180F,使处理器110与触摸传感器180F通过I2C总线接口通信,实现电子设备100的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备100的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
可理解地,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图片或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块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的正整数。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图片或视频播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
本申请实施例中,上述内部存储器121可以包括上述第一存储单元和上述第二存储单元,上述第一存储单元可以称为缓存器。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
扬声器170A,也称喇叭,用于将音频电信号转换为声音信号。
受话器170B,也称听筒,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
麦克风170C,也称话筒或传声器,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置至少一个麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。
电子设备100可以根据电容的变化确定压力的强度。示例性地,当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测所述触摸操作强度。又示例性地,电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
陀螺仪传感器180B可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。
加速度传感器180C可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。
指纹传感器180D用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器180E用于检测温度。在一些实施例中,电子设备100利用温度传感器180E检测的温度,执行温度处理策略。例如,当温度传感器180E上报的温度超过阈值,电子设备100执行降低位于温度传感器180E附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。
触摸传感器180F,也称“触控面板”。触摸传感器180F可以设置于显示屏194,由触摸传感器180F与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180F用于检测作用于其上或附近的触摸操作。触摸传感器180F可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180F也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
在一些实施例中,处理器110可以对触摸事件类型进行判断,在触摸事件类型为目标事件的情况下,记录上述触摸事件的检测时间。
SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备100中,不能和电子设备100分离。
在另一些实施例中,处理器110可以调用内部存储器121存储的计算机指令,以实现本申请实施例提供的应用启动耗时的检测方法。
示例性地,处理器110可以调用内部存储器121存储的计算机指令,检测activity并对检测到的activity进行识别,在activity为启动-activity的情况下,获取该activity之前最近的目标事件的检测时间计算应用冷启动耗时。
可以理解的是,电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构,本申请对此不作限定。在一些实施例中,如图1所示的分层架构中,系统运行库层还可以包括应用启动耗时检测模块,上述应用启动耗时检测模块用于实现本申请实施例提供的应用启动耗时检测方法。
上述电子设备100可以采用图1所示的分层架构,可选地,上述应用启动耗时检测模块可以包括activity识别模块和性能雷达服务模块。为便于理解,示例性地,请参阅图11,图11是本申请实施例提供的一种应用启动耗时检测系统的示意图,如图11所示的系统包括视图模块、窗口管理服务模块、activity识别模块以及性能雷达服务模块。其中,各个模块的描述如下:
在用户点击应用程序图标后,视图模块执行步骤1101:获取点击事件。
视图模块在获取到上述点击事件后,一方面执行步骤1102:启动应用,其中,在应用启动过程中联合窗口管理服务模块进行。另一方面执行步骤1103:上报该点击事件给性能雷达服务模块,相应地,性能雷达服务模块接收到该点击事件后对该点击事件的检测时间进行记录。
activity识别模块执行步骤1104:从窗口管理服务模块捕获activity。然后,activity识别模块对捕获到的activity进行识别,即识别捕获到的activity是否为启动-activity。其中,对activity的识别过程可以参阅前文图6以及图8对应的实施例,这里不再赘述。
在捕获到的activity为启动-activity的情况下,activity识别模块执行步骤1105:上报识别到的activity信息给性能雷达服务模块。
性能雷达服务模块接收到上述activity信息后,以上述activity的第一帧图像绘制完成的时刻为结束点,以最近的点击事件的检测时间为起始点,合成启动场景,并计算该启动场景的持续时间,得到应用启动时长。
在另一些实施例中,上述应用启动耗时检测模块也可以在上述分层构架的其他层级,例如应用层序框架层等,或者,上述应用启动耗时检测模块可以被划分为用于实现不同功能的子模块,不同的子模块位于不同的层级等,本申请对此不作限定。
示例性地,在一些实施例中,上述activity识别模块可以包括任务栈标识模块和event log监控模块,因此,上述应用启动耗时检测模块可以划分为任务栈标识模块、eventlog监控模块以及性能雷达服务模块。示例性地,请参阅图12,图12是本申请实施例提供的又一种应用冷启动耗时检测方法的流程示意图。
如图12所示,任务栈标识模块和event log监控模块可以位于应用程序框架层,性能雷达服务模块可以位于系统运行库层。可选地,任务栈标识模块和event log监控模块可以属于窗口管理(window manager,WM)模块。
在应用冷启动耗时检测过程中,电子设备的硬件TP根据电容值的变化判断是否存在用户触摸事件。在存在用户触摸事件的情况下,TP将用户触摸事件发送给内核层的TP驱动,在不存在用户触摸事件的情况下,TP继续对电容值的变化进行监控。
在TP确定存在用户触摸事件后,将用户触摸事件发送给内核层的TP驱动,TP驱动据用户触摸事件的变化判断用户触摸类型是否为点击事件。
本申请实施例中,性能雷达服务模块用于监控TP驱动并记录点击事件。因此,在TP驱动确定用户触摸类型为点击事件的情况下,一方面向视图控件发送上述点击事件,用于对上述点击事件进行响应,另一方面向性能雷达服务模块发送上述点击事件,以便于后续合成启动场景计算应用启动耗时。
视图控件在接收到点击事件后,根据点击事件创建view。在view创建完毕后,视图控件向launcher组件发送上述点击事件,launcher组件对点击事件进行响应,生成应用启动事件。
launcher组件将上述应用启动事件发送给任务栈标识模块,在应用启动过程中会创建任务栈,任务栈标识模块将任务栈的标识初始化为标识A,然后,任务栈标识模块向应用冷启动模块发送应用启动事件,是的应用冷启动模块对应用进行冷启动。
event log监控模块通过系统日志打印,从应用冷启动模块监控并捕获启动的activity。在捕获到activity后,event log监控模块识别activity是否为应用冷启动的activity。其中,识别activity是否为应用冷启动的activity的方式可以参阅前文图8所示的实施例。
在event log监控模块识别到应用冷启动的activity后,一方面向任务栈标识模块进行反馈,使得任务栈标识模块对任务栈标记进行修改,例如从标识A修改为标识B。另一方面向性能雷达服务模块上报应用冷启动的activity信息,其中,activity信息可以包括该activity的第一帧图像绘制完成的时刻,以及该activity对应的应用等信息。
性能雷达服务模块在接收到activity信息后,以该activity的第一帧图像绘制完成的时刻为结束点,以最近的点击事件的检测时间为起始点,合成启动场景,并计算该启动场景的持续时间,得到应用启动时长。
示例性地,上述activity识别模块、上述性能雷达服务模块、上述任务栈标识模块以及上述event log监控模块执行的步骤可以由图10中的处理器110执行。
本申请还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机代码,当计算机代码在计算机上运行时,使得计算机执行上述实施例的方法。
本申请还提供一种芯片,包括逻辑电路和接口,上述逻辑电路和接口耦合;上述接口用于输入和/或输出代码指令,上述逻辑电路用于执行上述代码指令,以使上述实施例的方法中的方法被执行。
本申请还提供一种计算机程序产品,该计算机程序产品包括计算机代码或计算机程序,当该计算机代码或计算机程序在计算机上运行时,使得上述实施例中的方法被执行。
上述实施例中所用,根据上下文,术语“当…时”可以被解释为意思是“如果…”或“在…后”或“响应于确定…”或“响应于检测到…”。类似地,根据上下文,短语“在确定…时”或“如果检测到(所陈述的条件或事件)”可以被解释为意思是“如果确定…”或“响应于确定…”或“在检测到(所陈述的条件或事件)时”或“响应于检测到(所陈述的条件或事件)”。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如DVD)、或者半导体介质(例如固态硬盘)等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
还应理解,以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应当以上述权利要求的保护范围为准。
Claims (10)
1.一种应用启动耗时检测方法,其特征在于,所述方法包括:
检测目标事件以及活动组件,所述目标事件用于触发启动应用;
在检测到的活动组件满足预设条件的情况下,确定所述活动组件为目标活动组件,所述预设条件包括活动组件的类别信息为启动器且活动组件的动作信息为主函数;
将第一时刻与第二时刻之间的时间差作为所述目标活动组件对应的应用的启动时长,所述第一时刻为所述目标活动组件的第一帧图像绘制完成的时刻,所述第二时刻为所述第一时刻之前距离所述第一时刻最近的目标事件的检测时刻。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括;
检测任务栈,所述任务栈用于存放活动组件;
在检测到任务栈被创建的情况下,将所述任务栈的标识设定为第一标识,所述第一标识用于表示所述任务栈对应的应用未完成启动耗时检测;
在检测到的活动组件不满足所述预设条件且所述活动组件所在的任务栈的标识为所述第一标识的情况下,确定所述活动组件为所述目标活动组件。
3.根据权利要求2所述的方法,其特征在于,所述确定所述活动组件为所述目标活动组件之后,所述方法还包括;
将所述活动组件所在的任务栈的标识修改为第二标识,所述第二标识用于表示所述任务栈对应的应用已完成启动耗时检测。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括;
在检测到的活动组件不满足所述预设条件,且所述活动组件所在的任务栈的标识为所述第二标识的情况下,确定所述活动组件不为所述目标活动组件。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述检测活动组件,包括:
监控事件日志,所述事件日志用于记录电子设备中已经启动的活动组件;
通过所述事件日志检测活动组件。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述检测目标事件,包括:
在通过电子设备的触摸屏的电容值变化确定发生触摸事件的情况下,根据所述触摸事件的变化检测所述目标事件。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述目标事件包括点击事件或点击触摸屏后的抬手事件。
8.一种电子设备,其特征在于,包括处理器、存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,使得如权利要求1-7中任一项所述的方法被执行。
9.一种芯片,其特征在于,包括逻辑电路和接口,所述逻辑电路和接口耦合;所述接口用于输入和/或输出代码指令,所述逻辑电路用于执行所述代码指令,以使权利要求1-7中任一项所述的方法被执行。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时,使得如权利要求1-7中任一项所述的方法被执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211618121.3A CN116662150B (zh) | 2022-12-15 | 2022-12-15 | 应用启动耗时检测方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211618121.3A CN116662150B (zh) | 2022-12-15 | 2022-12-15 | 应用启动耗时检测方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116662150A true CN116662150A (zh) | 2023-08-29 |
CN116662150B CN116662150B (zh) | 2024-05-31 |
Family
ID=87724822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211618121.3A Active CN116662150B (zh) | 2022-12-15 | 2022-12-15 | 应用启动耗时检测方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116662150B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893251A (zh) * | 2016-03-29 | 2016-08-24 | 工业和信息化部电信研究院 | 一种智能终端app启动所需时间的测试方法及系统 |
CN109359020A (zh) * | 2018-08-16 | 2019-02-19 | 中国平安人寿保险股份有限公司 | 启动时间测试方法及装置、计算机装置及存储介质 |
CN110673887A (zh) * | 2019-08-15 | 2020-01-10 | 华为技术有限公司 | 应用程序启动方法、装置、终端设备及可读存储介质 |
CN112527403A (zh) * | 2019-09-19 | 2021-03-19 | 华为技术有限公司 | 一种应用启动方法及电子设备 |
CN112783761A (zh) * | 2020-12-25 | 2021-05-11 | 广州品唯软件有限公司 | 一种应用程序的冷启动时长测试方法、装置及系统 |
WO2022031029A1 (ko) * | 2020-08-04 | 2022-02-10 | 삼성전자 주식회사 | 전자 장치 및 전자 장치가 외부 장치 디스플레이 상에 어플리케이션 화면을 제공하는 방법 |
CN114168222A (zh) * | 2021-11-29 | 2022-03-11 | 北京博睿宏远数据科技股份有限公司 | 一种启动耗时的获取方法、装置、终端设备和存储介质 |
WO2022068483A1 (zh) * | 2020-09-30 | 2022-04-07 | 华为技术有限公司 | 应用启动方法、装置和电子设备 |
CN115016866A (zh) * | 2022-08-09 | 2022-09-06 | 荣耀终端有限公司 | 应用启动时的数据处理方法、电子设备及存储介质 |
-
2022
- 2022-12-15 CN CN202211618121.3A patent/CN116662150B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893251A (zh) * | 2016-03-29 | 2016-08-24 | 工业和信息化部电信研究院 | 一种智能终端app启动所需时间的测试方法及系统 |
CN109359020A (zh) * | 2018-08-16 | 2019-02-19 | 中国平安人寿保险股份有限公司 | 启动时间测试方法及装置、计算机装置及存储介质 |
CN110673887A (zh) * | 2019-08-15 | 2020-01-10 | 华为技术有限公司 | 应用程序启动方法、装置、终端设备及可读存储介质 |
CN112527403A (zh) * | 2019-09-19 | 2021-03-19 | 华为技术有限公司 | 一种应用启动方法及电子设备 |
WO2022031029A1 (ko) * | 2020-08-04 | 2022-02-10 | 삼성전자 주식회사 | 전자 장치 및 전자 장치가 외부 장치 디스플레이 상에 어플리케이션 화면을 제공하는 방법 |
WO2022068483A1 (zh) * | 2020-09-30 | 2022-04-07 | 华为技术有限公司 | 应用启动方法、装置和电子设备 |
CN112783761A (zh) * | 2020-12-25 | 2021-05-11 | 广州品唯软件有限公司 | 一种应用程序的冷启动时长测试方法、装置及系统 |
CN114168222A (zh) * | 2021-11-29 | 2022-03-11 | 北京博睿宏远数据科技股份有限公司 | 一种启动耗时的获取方法、装置、终端设备和存储介质 |
CN115016866A (zh) * | 2022-08-09 | 2022-09-06 | 荣耀终端有限公司 | 应用启动时的数据处理方法、电子设备及存储介质 |
Non-Patent Citations (4)
Title |
---|
刘忆初: "Android系统开机到Launcher启动流程分析", pages 1 - 5, Retrieved from the Internet <URL:《https://blog.csdn.net/qq_34512207/article/details/113725772》> * |
李霞: "Android虚拟机运行时技术的分析与评测", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 05, 15 May 2016 (2016-05-15), pages 138 - 976 * |
王凯: "基于Android平台的快速启动技术的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 01, pages 138 - 1555 * |
谷歌开发者: "测试应用启动性能", pages 1 - 5, Retrieved from the Internet <URL:《https://zhuanlan.zhihu.com/p/365953480》> * |
Also Published As
Publication number | Publication date |
---|---|
CN116662150B (zh) | 2024-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113704014B (zh) | 日志获取系统、方法、电子设备及存储介质 | |
WO2020108356A1 (zh) | 一种应用显示方法及电子设备 | |
CN113704205B (zh) | 日志存储的方法、芯片、电子设备和可读存储介质 | |
CN113641271B (zh) | 应用窗口的管理方法、终端设备及计算机可读存储介质 | |
WO2020024108A1 (zh) | 一种应用图标的显示方法及终端 | |
CN116315667B (zh) | 数据传输方法、装置、设备及存储介质 | |
CN114911400A (zh) | 分享图片的方法和电子设备 | |
CN110609650B (zh) | 一种应用状态切换方法及终端设备 | |
CN116389884B (zh) | 缩略图显示方法及终端设备 | |
CN116048831B (zh) | 一种目标信号处理方法和电子设备 | |
CN115482143B (zh) | 应用的图像数据调用方法、系统、电子设备及存储介质 | |
CN114691248B (zh) | 显示虚拟现实界面的方法、装置、设备和可读存储介质 | |
CN113050864B (zh) | 一种截屏方法及相关设备 | |
CN116662150B (zh) | 应用启动耗时检测方法及相关装置 | |
CN113467821A (zh) | 应用程序的修复方法、装置、设备及可读存储介质 | |
CN115373957A (zh) | 杀应用的方法及设备 | |
CN117273687B (zh) | 一种打卡推荐方法及电子设备 | |
CN114006969B (zh) | 一种窗口启动方法和电子设备 | |
CN116795604B (zh) | 应用异常退出的处理方法、装置和设备 | |
CN115016666B (zh) | 触控处理方法、终端设备以及存储介质 | |
CN116991274B (zh) | 一种上滑动效异常处理方法及电子设备 | |
CN116048629B (zh) | 系统服务切换方法及控制装置、电子设备和存储介质 | |
CN116795476B (zh) | 一种删除壁纸的方法及电子设备 | |
CN116700578B (zh) | 图层合成方法、电子设备以及存储介质 | |
CN114205318B (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 |