一种软件卡顿监测方法、装置、设备和存储介质与流程

文档序号:17949807发布日期:2019-06-18 23:56阅读:242来源:国知局
一种软件卡顿监测方法、装置、设备和存储介质与流程

本发明实施例涉及软件技术领域,尤其涉及一种软件卡顿监测方法、装置、设备和存储介质。



背景技术:

随着计算机技术的不断进步,各种各样的软件开始出现在人们视野中,而对于软件需要进行各种功能检测,以保证软件的运行,这其中对于软件的卡顿检测便是软件检测的一种重要组成部分。

对于软件卡顿的检测,在软件运行时,例如,应用程序(application,简称app)启动后,软件运行程序中的卡顿检测代码便进行卡顿的监测,一旦卡顿时间超过了设定的时间阈值,则上报给后台服务器,便于工作人员及时了解,并根据卡顿情况进行后续的修复工作。

然而,现有技术中,卡顿检测代码都是写入软件运行程序中,其设定的卡顿时间阈值在代码层面也是封死的,因此,不能根据需要进行卡顿检测功能的开启和关闭,也不能调整卡顿时间阈值。



技术实现要素:

本发明实施例提供了一种软件卡顿监测方法、装置、设备和存储介质,以根据从服务器获取的卡顿监测启动标识以及卡顿时间阈值,实现卡顿事件上报。

第一方面,本发明实施例提供了一种软件卡顿监测方法,包括:

当应用程序启动后,从服务器获取卡顿设定;所述卡顿设定由所述服务器配置,包括卡顿监测启动标识以及卡顿时间阈值;

若所述卡顿监测启动标识为启动状态,则对所述应用程序的主线程运行进行监测;

获取所述主线程的卡顿持续时间,并将所述卡顿持续时间与所述卡顿时间阈值进行比较;

若所述卡顿持续时间超过所述卡顿时间阈值,则向所述服务器上报卡顿事件。

第二方面,本发明实施例提供了一种软件卡顿监测装置,包括:

卡顿设定获取模块,用于当应用程序启动后,从服务器获取卡顿设定;所述卡顿设定由所述服务器配置,包括卡顿监测启动标识以及卡顿时间阈值;

主线程运行监测模块,用于若所述卡顿监测启动标识为启动状态,则对所述应用程序的主线程运行进行监测;

卡顿持续时间获取模块,用于获取所述主线程的卡顿持续时间,并将所述卡顿持续时间与所述卡顿时间阈值进行比较;

卡顿事件上报模块,用于若所述卡顿持续时间超过所述卡顿时间阈值,则向所述服务器上报卡顿事件。

第三方面,本发明实施例还提供了一种设备,所述设备包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所述的软件卡顿监测方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所述的软件卡顿监测方法。

本发明实施例的技术方案,通过从服务器获取卡顿监测启动标识以及卡顿时间阈值,并在卡顿监测启动标识为启动状态下,当通过监测主程序获取到的卡顿持续时间超过所述卡顿时间阈值时,向服务器上报卡顿事件。根据获取的服务器配置的不同,实现了应用程序对卡顿监测的开启或关闭,以及卡顿事件的上报,便于程序人员对代码进行改进,优化软件性能,提高软件的用户体验。

附图说明

图1是本发明实施例一提供的一种软件卡顿监测方法的流程图;

图2是本发明实施例二提供的一种软件卡顿监测方法的流程图;

图3是本发明实施例三提供的一种软件卡顿监测装置的结构框图;

图4是本发明实施例四提供的一种设备的结构框图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的一种软件卡顿监测方法的流程图,本实施例可适用于监测软件运行时的卡顿情况,该方法可以由本发明实施例中的软件卡顿监测装置来执行,该装置可以通过软件和/或硬件的方式实现,典型的,可以以程序代码的方式集成在应用程序(app)中,与用于提供卡顿设定的服务器配合使用,本发明实施例的方法具体包括如下步骤:

s110、当应用程序启动后,从服务器获取卡顿设定;所述卡顿设定由所述服务器配置,包括卡顿监测启动标识以及卡顿时间阈值。

当应用程序启动时,对应的应用程序进程被操作系统创建。因此,在本发明实施例中,可选的,通过检测应用程序对应的应用程序进程是否启动,来判断所述应用程序是否启动,例如,在android系统中,activitymanagerservice(活动服务管理,简称ams)负责所有应用程序的创建和管理,因此,当ams检测到所述应用程序对应的应用程序进程启动时,则判断所述应用程序已启动,进而该应用程序从服务器获取卡顿设定。特别的,在本发明实施例中,对于应用程序启动的获取方式不作具体限定。

卡顿,就是应用程序运行时出现的画面滞帧现象。应用程序的流畅度对用户来说是最直观的视觉感受,而在应用程序开发过程中,由于软件设计中存在的种种缺陷,常常会引起应用程序的卡顿。而这些卡顿,哪怕只是轻微的卡顿有时也会导致用户的界面操作需要等待较长时间才能生效,严重的卡顿甚至导致系统弹出应用程序无响应(applicationnotresponding,简称anr)的提示窗口,使得用户不得不关闭应用,极大地影响应用程序的流畅度。因此,对于应用程序的卡顿监测就变得尤为重要。

造成应用程序卡顿的原因有很多,例如,在绘制应用程序的界面时,特别是绘制应用程序启动后的初始界面和跳转界面时,由于界面绘制的层级过深、页面复杂或刷新不合理等原因导致的应用程序卡顿;还有在数据处理量太大时,该应用程序数据处理占用cpu过高,导致主线程拿不到时间片,都会引起卡顿。以界面绘制时页面刷新不合理为例,android系统设定的刷新率是60fps(framepersecond),即每秒60帧的刷新率,约合16ms刷新一次,这样当有严重的耗时操作,使得应用程序的页面刷新频率低于16帧/ms时,就会导致应用程序卡顿,产生滞帧现象。

卡顿设定包括卡顿监测启动标识以及卡顿时间阈值。卡顿监测启动标识,用于表示是否开启对应用程序的卡顿监测,当卡顿监测启动标识为启动状态时,则开启对应用程序的卡顿监测;当卡顿监测启动标识为关闭状态时,则停止对应用程序的卡顿监测。卡顿时间阈值,作为卡顿持续时间是否影响应用程序性能的判断标准,当卡顿持续时间超过卡顿事件阈值时,认为产生了影响应用程序性能的事件;当卡顿持续时间未超过卡顿事件阈值时,认为未产生影响应用程序性能的事件。

现有技术中,卡顿检测代码写入应用程序中,应用程序启动即进行卡顿监测,不能根据需要进行卡顿监测功能的开启和关闭;而在本发明实施例中,卡顿设定可以在服务器中进行配置,设定开启或关闭卡顿监测;例如,在应用程序测试用户注册或登录功能时,其主要目的是获取用户在注册或登录过程中遇到的与账号或密码相关的问题,此时测试的主要目的并不在于应用程序的流程性,因此,不需要进行卡顿的监测,此时在服务器中配置为卡顿监测功能关闭,这样不需要进行卡顿的监测,减少了应用程序测试的步骤,更有针对性的获取到目标功能测试中存在的问题,提高了测试效率。

另外,现有技术中,卡顿时间阈值在代码层面也是固定的,不能调整卡顿时间阈值;而在本发明实施例中,卡顿设定可以在服务器中进行配置,设定不同的卡顿时间阈值;例如,在应用程序开发初期,其主要目的是构建应用程序功能的完整性,是否能执行该应用程序应该具备的所有业务操作,并不要求应用程序运行的流畅性,此时可以设定一个较高的卡顿时间阈值,不对流畅性有过高要求;而当应用程序开发接近完成时,已经可以执行该应用程序的所有业务操作,功能的完整性已经基本完成,此时应用程序的流畅性便成为了主要测试点,其主要为了提高用户体验,此时设定一个较低的卡顿时间阈值,保证应用程序流畅的运行。

s120、若所述卡顿监测启动标识为启动状态,则对所述应用程序的主线程运行进行监测。

当应用程序启动时,对应的应用程序进程被操作系统创建,与此同时一个线程也立刻运行,该线程即为主线程,因此,主线程从应用程序启动就开始执行的,再创建其他线程时,那么其它线程就是这个主线程的子线程。

在本发明实施例中,可选的,通过开启子线程,监测主线程runloop的方式进行应用程序的卡顿监测。

主线程一次只能执行一个任务,不能同一时间执行多个任务,而runloop是一个控制线程生命周期并接收事件进行处理的机制,循环地处理应用程序运行过程中出现的各种事件,例如,触摸事件、刷新事件和定时器事件等。在默认情况下,主线程执行完之后就会退出,不再执行其它任务,runloop能让主线程在保持程序持续运行的同时,随时处理事件但不退出。特别的,runloop通过inputsources(输入源)和timersources(定时源)两种来源等待接受事件,然后对接受到的事件通知线程进行处理,并在没有事件处理的时候,会使线程进入睡眠模式,节省处理器资源,提高了程序性能。

在主线程运行时,将一些无需及时返回且耗时的操作提取出来,通过创建一个独立的且生命周期可控的子线程来执行这些任务,即进行异步处理。如果没有子线程进行异步处理,当遇到耗时长的任务时,就会出现用户长时间等待,并且由于当前应用程序执行任务还未完成时,所以这时候所有的其他操作都会无响应。

通过开启子线程,并监测主线程runloop的方式,节省了服务器的请求响应时间,极大地提高了应用程序运行效率。

s130、获取所述主线程的卡顿持续时间,并将所述卡顿持续时间与所述卡顿时间阈值进行比较。

获取到主线程的卡顿程序时间后,与从服务器中获取到的卡顿时间阈值进行比较。

s140、若所述卡顿持续时间超过所述卡顿时间阈值,则向所述服务器上报卡顿事件。

若所述卡顿持续时间超过所述卡顿时间阈值,即证明应用程序中存在影响应用程序流畅性的问题,则向所述服务器上报卡顿事件,程序维护人员根据上报的卡顿事件进行代码缺陷的查询并修复。

若所述卡顿持续时间未超过所述卡顿时间阈值,即证明应用程序中不存在影响应用程序流畅性的问题,不需要向所述服务器上报卡顿事件。

本发明实施例的技术方案,通过从服务器获取卡顿监测启动标识以及卡顿时间阈值,并在卡顿监测启动标识为启动状态下,当通过监测主程序获取到的卡顿持续时间超过所述卡顿时间阈值时,向服务器上报卡顿事件。根据服务器的不同配置,实现了应用程序对卡顿监测的开启或关闭,以及卡顿事件的上报,便于程序人员对代码进行改进,优化软件性能,提高软件的用户体验。

实施例二

图2为本发明实施例二中的一种软件卡顿监测方法的流程图,本实施例以上述实施例为基础进行具体化,在本实施例中,卡顿设定为json格式,并通过enable函数和threshold函数分别配置卡顿监测启动标识和卡顿时间阈值,本发明实施例的方法具体包括如下步骤:

s210、当应用程序启动后,向所述服务器发送网络请求获取卡顿设定;所述卡顿设定由所述服务器配置,包括enable函数和threshold函数,所述enable函数用于配置卡顿监测启动标识,所述threshold函数用于配置卡顿时间阈值。

在本发明实施例中,所述卡顿设定为json格式。json(javascriptobjectnotation,js对象简谱)是一种轻量级的数据交换格式,其存储和表示数据的文本格式完全独立于编程语言,因此不受应用程序编程语言的限制。json的层次结构简洁、清晰,非常适合于作为数据交换语言,同时易于应用程序开发人员阅读和编写,也易于机器的解析和生成,可以有效地提升网络传输效率。

enable函数,用于获取或设置一个数值,该数值用来表示是否启用某种应用程序功能,在本发明实施例中,enable函数用于启动或关闭应用程序的卡顿监测;threshold函数,即阈值函数,用于设定阈值,在本发明实施例中,threshold函数用于设定卡顿时间阈值。

s220、解析所述卡顿设定中的enable函数获取第一函数值,将所述第一函数值作为所述卡顿监测启动标识。

解析所述卡顿设定中的enable函数,获取enable函数中的数值,即第一函数值,并将该第一函数值作为卡顿监测启动标识。

s230、若所述第一函数值为第一预设值,则确定所述卡顿监测启动标识为开启状态,对所述应用程序的主线程运行进行监测。

第一预设值,即卡顿监测启动标识为开启状态时的数值,是预先定义好的,例如,将第一预设值设置为1,那么解析enable函数获取的第一函数值与第一与预设值匹配也为1时,则确定所述卡顿监测启动标识为开启状态,对所述应用程序的主线程运行进行卡顿监测。

特别的,开启或关闭卡顿监测可以直接在服务器中修改,例如,关闭卡顿监测,直接将enable函数设定为0,应用程序获取后即关闭卡顿监测。

s240、解析所述卡顿设定中的threshold函数获取第二函数值,将所述第二函数值作为所述卡顿时间阈值。

解析所述卡顿设定中的threshold函数,获取threshold函数中的数值,即第二函数值,并将该第二函数值作为卡顿时间阈值。

特别的,卡顿时间阈值可以直接在服务器中修改,例如,将卡顿时间阈值设定为3000毫秒,直接将enable函数设定为3000,应用程序获取后即将3000毫秒作为卡顿时间阈值。

s250、获取所述主线程的卡顿持续时间,并将所述卡顿持续时间与所述卡顿时间阈值进行比较。

s260、若所述卡顿持续时间超过所述卡顿时间阈值,则向所述服务器上报卡顿事件。

本实施例的技术方案,利用json语言易于阅读、编写和解析,且不受应用程序编程语言限制的特点,通过enable函数和threshold函数分别配置卡顿监测启动标识和卡顿时间阈值,不但实现了应用程序对卡顿监测的开启或关闭,以及卡顿事件的上报,便于程序人员对代码进行改进,提高了软件的用户体验,还有效地提升了网络传输效率,保证了卡顿监测的及时性。

实施例三

图3是本发明实施例三所提供的一种软件卡顿监测装置的结构框图,该装置具体包括:卡顿设定获取模块310、主线程运行监测模块320、卡顿持续时间获取模块330和卡顿事件上报模块340。

卡顿设定获取模块310,用于当应用程序启动后,从服务器获取卡顿设定;所述卡顿设定由所述服务器配置,包括卡顿监测启动标识以及卡顿时间阈值;

主线程运行监测模块320,用于若所述卡顿监测启动标识为启动状态,则对所述应用程序的主线程运行进行监测;

卡顿持续时间获取模块330,用于获取所述主线程的卡顿持续时间,并将所述卡顿持续时间与所述卡顿时间阈值进行比较;

卡顿事件上报模块340,用于若所述卡顿持续时间超过所述卡顿时间阈值,则向所述服务器上报卡顿事件。

本发明实施例的技术方案,通过从服务器获取卡顿监测启动标识以及卡顿时间阈值,并在卡顿监测启动标识为启动状态下,当通过监测主程序获取到的卡顿持续时间超过所述卡顿时间阈值时,向服务器上报卡顿事件。根据服务器的不同配置,实现了应用程序对卡顿监测的开启或关闭,以及卡顿事件的上报,便于程序人员对代码进行改进,优化软件性能,提高软件的用户体验。

可选的,在上述技术方案的基础上,卡顿设定获取模块310,具体用于:

从服务器获取json格式的卡顿设定。

可选的,在上述技术方案的基础上,主线程运行监测模块320,具体用于:

通过开启子线程对所述主线程运行进行监测。

可选的,在上述技术方案的基础上,卡顿设定获取模块310,具体用于:

用于向所述服务器发送网络请求获取卡顿设定;所述卡顿设定包括enable函数和threshold函数,所述enable函数用于配置卡顿监测启动标识,所述threshold函数用于配置卡顿时间阈值。

可选的,在上述技术方案的基础上,软件卡顿监测装置,还包括:

enable函数解析模块,用于解析所述卡顿设定中的enable函数获取第一函数值,将所述第一函数值作为所述卡顿监测启动标识。

可选的,在上述技术方案的基础上,主线程运行监测模块320,具体用于:

若所述第一函数值为第一预设值,则确定所述卡顿监测启动标识为开启状态,对所述应用程序的主线程运行进行监测。

可选的,在上述技术方案的基础上,软件卡顿监测装置,还包括:

threshold函数解析模块,用于解析所述卡顿设定中的threshold函数获取第二函数值,将所述第二函数值作为所述卡顿时间阈值。

上述装置可执行本发明任意实施例所提供的软件卡顿监测方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明任意实施例提供的方法。

实施例四

图4为本发明实施例四提供的一种设备的结构示意图,如图4所示,该设备包括处理器40、存储器41、输入装置42和输出装置43;设备中处理器40的数量可以是一个或多个,图4中以一个处理器40为例;设备处理器40、存储器41、输入装置42和输出装置43可以通过总线或其他方式连接,图4中以通过总线连接为例。

存储器41作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例三中的软件卡顿监测装置对应的模块(卡顿设定获取模块310、主线程运行监测模块320、卡顿持续时间获取模块330和卡顿事件上报模块340)。处理器40通过运行存储在存储器41中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的软件卡顿监测方法。

存储器41可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器41可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器41可进一步包括相对于处理器40远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置42可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置43可包括显示屏等显示设备。

实施例五

本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种软件卡顿监测方法,该方法包括:

当应用程序启动后,从服务器获取卡顿设定;所述卡顿设定由所述服务器配置,包括卡顿监测启动标识以及卡顿时间阈值;

若所述卡顿监测启动标识为启动状态,则对所述应用程序的主线程运行进行监测;

获取所述主线程的卡顿持续时间,并将所述卡顿持续时间与所述卡顿时间阈值进行比较;

若所述卡顿持续时间超过所述卡顿时间阈值,则向所述服务器上报卡顿事件。

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的软件卡顿监测方法中的相关操作。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

值得注意的是,上述软件卡顿监测装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1