CN109446094B - 一种卡顿检测方法、装置、电子设备和存储介质 - Google Patents

一种卡顿检测方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN109446094B
CN109446094B CN201811308521.8A CN201811308521A CN109446094B CN 109446094 B CN109446094 B CN 109446094B CN 201811308521 A CN201811308521 A CN 201811308521A CN 109446094 B CN109446094 B CN 109446094B
Authority
CN
China
Prior art keywords
interface
variable
thread
detection result
stuck
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.)
Active
Application number
CN201811308521.8A
Other languages
English (en)
Other versions
CN109446094A (zh
Inventor
陈继军
薛栋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN201811308521.8A priority Critical patent/CN109446094B/zh
Publication of CN109446094A publication Critical patent/CN109446094A/zh
Application granted granted Critical
Publication of CN109446094B publication Critical patent/CN109446094B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例提供了一种卡顿检测方法、装置、电子设备和存储介质,所述方法应用于应用程序,应用程序设置有UI线程,UI线程设置有第一变量;所述方法包括:向UI线程发送第二变量;UI线程用于确定第二变量和预置参数之和为第一变量的值;在预置时间间隔后,根据第一变量的值和第二变量的值,生成消息卡顿检测结果;在绘制应用程序的界面时,确定界面中两帧之间的界面绘制时间间隔;根据界面绘制时间间隔和预置时间阈值,生成界面卡顿检测结果;展示消息卡顿检测结果,和/或界面卡顿检测结果。本发明实施例可以实现针对应用程序的不同性能同时进行卡顿检测,并直观地将相应得到的卡顿检测结果进行展示,提高了对应用程序的卡顿检测效率。

Description

一种卡顿检测方法、装置、电子设备和存储介质
技术领域
本发明涉及信息科学技术领域,特别是涉及一种卡顿检测方法、装置、电子设备和存储介质。
背景技术
随着智能终端的发展,智能终端越来越渗透于人们的日常生活中。而在人们使用智能终端时,一般都是通过运行安装在智能终端上的应用程序,而满足自己的需求。
基于应用程序的优化策略、智能终端的硬件性能等原因,应用程序在运行期间可能会出现卡顿的情况。现在的技术中,在对应用程序进行不同方面的性能进行卡顿检测时,一般都是在测试过程中,先对测试数据进行存储,后续通过人工的方式查阅测试数据,才能分析卡顿检测的结果,缺乏对测试数据的及时展示,降低测试效率,也使得测试人员无法在应用程序出现卡顿时,获知应用程序的运行状态。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种卡顿检测方法和相应的一种卡顿检测装置、电子设备、存储介质
为了解决上述问题,本发明实施例公开了一种卡顿检测方法,应用于应用程序,所述应用程序设置有UI线程,所述UI线程设置有第一变量;所述方法包括:
向所述UI线程发送第二变量;所述UI线程用于确定所述第二变量和预置参数之和为所述第一变量的值;
在预置时间间隔后,根据所述第一变量的值和所述第二变量的值,生成消息卡顿检测结果;
在绘制所述应用程序的界面时,确定所述界面中两帧之间的界面绘制时间间隔;
根据所述界面绘制时间间隔和预置时间阈值,生成界面卡顿检测结果;
展示所述消息卡顿检测结果,和/或所述界面卡顿检测结果。
优选地,所述第一变量具有初始值;所述向所述UI线程发送第二变量的步骤,包括:
启动监控线程;
采用所述监控线程生成第二变量;所述第二变量的值与所述初始值相等;
采用所述监控线程将所述第二变量发送至所述UI线程。
优选地,所述在预置时间间隔后,根据所述第一变量和所述第二变量,生成消息处理检测结果的步骤,包括:
在预置时间间隔后,检测所述第一变量的值和第二变量的值;
判断所述第一变量的值与所述第二变量的值是否相等;
若所述第一变量的值与所述第二变量的值相等,则生成消息卡顿检测结果。
优选地,所述生成所述消息卡顿检测结果的步骤,包括:
确定所述应用程序当前运行的第一线程;
获取与所述第一线程对应的第一执行信息;
基于所述第一执行信息,生成所述消息卡顿检测结果。
优选地,所述应用程序设置有绘制数据库,所述绘制数据库记录有绘制界面的历史帧对应的时间戳;所述确定所述界面中两帧之间的界面绘制时间间隔的步骤,包括:
确定绘制所述界面当前帧的第一时间戳;
在所述绘制数据库中,提取绘制所述界面上一帧的第二时间戳;
计算所述第一时间戳与所述第二时间戳的差值;
确定所述第二时间戳与所述第一时间戳的差值为所述界面绘制时间间隔。
优选地,所述根据界面绘制时间间隔和预置时间阈值,生成界面卡顿检测结果的步骤,包括:
判断所述界面绘制时间间隔是否大于预置时间阈值;
若所述界面绘制时间间隔大于预置时间阈值,则生成所述界面卡顿检测结果。
优选地,所述生成界面卡顿检测节结果的步骤,包括:
确定所述应用程序当前运行的第二线程;
获取与所述第二线程对应的第二执行信息;
基于所述第二执行信息,生成所述界面卡顿检测结果。
优选地,所述展示所述消息卡顿检测结果,和/或所述界面卡顿检测结果的步骤,包括:
生成告警弹窗;
在所述告警弹窗中,展示所述消息卡顿检测结果,和/或所述界面卡顿检测结果。
本发明实施例还公开了一种卡顿检测装置,应用于应用程序,所述应用程序设置有UI线程,所述UI线程设置有第一变量;所述装置包括:
发送模块,用于向所述UI线程发送第二变量;所述UI线程用于确定所述第二变量和预置参数之和为所述第一变量的值;
消息卡顿模块,用于在预置时间间隔后,根据所述第一变量和所述第二变量,生成消息卡顿检测结果;
绘制模块,用于在绘制所述应用程序的界面时,确定所述界面中两帧之间的界面绘制时间间隔;
界面卡顿模块,用于根据界面绘制时间间隔,生成界面卡顿检测结果;
展示模块,用于展示所述消息卡顿检测结果,和/或所述界面卡顿检测结果。
优选地,所述第一变量具有初始值;所述发送模块包括:
启动子模块,用于启动监控线程;
变量生成子模块,用于采用所述监控线程生成第二变量;所述第二变量的值与所述初始值相等;
变量发送子模块,用于采用所述监控线程将所述第二变量发送至所述UI线程。
优选地,所述消息卡顿模块包括:
变量检测子模块,用于在预置时间间隔后,检测所述第一变量的值和第二变量的值;
变量判断子模块,用于判断所述第一变量的值与所述第二变量的值是否相等;
消息卡顿生成子模块,用于若所述第一变量的值与所述第二变量的值相等,则生成消息卡顿检测结果。
优选地,所述消息卡顿生成子模块包括:
第一线程确定单元,用于确定所述应用程序当前运行的第一线程;
第一信息获取单元,用于获取与所述第一线程对应的第一执行信息;
消息卡顿结果单元,用于基于所述第一执行信息,生成所述消息卡顿检测结果。
优选地,所述应用程序设置有绘制数据库,所述绘制数据库记录有绘制界面的历史帧对应的时间戳;所述绘制模块包括:
第一时间戳子模块,用于确定绘制所述界面当前帧的第一时间戳;
第二时间戳子模块,用于在所述绘制数据库中,提取绘制所述界面上一帧的第二时间戳;
时间戳计算子模块,用于计算所述第一时间戳与所述第二时间戳的差值;
时间间隔子模块,用于确定所述第二时间戳与所述第一时间戳的差值为所述界面绘制时间间隔。
优选地,所述界面卡顿模块包括:
绘制时间判断子模块,用于判断所述界面绘制时间间隔是否大于预置时间阈值;
界面卡顿生成子模块,用于若所述界面绘制时间间隔大于预置时间阈值,则生成所述界面卡顿检测结果。
优选地,所述界面卡顿生成子模块包括:
第二线程单元,用于确定所述应用程序当前运行的第二线程;
第二信息单元,用于获取与所述第二线程对应的第二执行信息;
界面卡顿结果单元,用于基于所述第二执行信息,生成所述界面卡顿检测结果。
优选地,所述展示模块包括:
弹窗生成子模块,用于生成告警弹窗;
结果展示子模块,用于在所述告警弹窗中,展示所述消息卡顿检测结果,和/或所述界面卡顿检测结果。
本发明实施例还公开了电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的卡顿检测方法的步骤。
本发明实施例还公开了计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的卡顿检测方法的步骤。
本发明实施例包括以下优点:在本发明实施例中,通过向应用程序的UI线程设置有第一变量,在向UI线程发送第二变量后,根据第一变量的值和第二变量的值,判断UI线程是否发生了消息处理卡顿情况,进而可以生成消息卡顿检测结果。在绘制应用程序的界面时,通过确定界面中两帧之间的界面绘制时间间隔,并根据界面绘制时间间隔和预置时间阈值,判断在绘制应用程序的界面时候是否发生了卡顿情况,进而可以生成界面卡顿检测结果,然后对消息卡顿检测结果和/或界面卡顿检测结果进行展示,从而实现针对应用程序的不同性能同时进行卡顿检测,并直观地将相应得到的卡顿检测结果进行展示,提高了对应用程序的卡顿检测效率,无需测试人员对卡顿场景进行复原。
附图说明
图1是本发明的一种卡顿检测方法实施例一的步骤流程图;
图2是本发明的一种卡顿检测方法实施例二的步骤流程图
图3是本发明的一种卡顿检测装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,示出了本发明的一种卡顿检测方法实施例一的步骤流程图,所述方法可以应用于应用程序,所述应用程序设置有UI(User Interface,用户界面)线程,所述UI线程设置有第一变量;所述方法具体可以包括:
步骤101,向所述UI线程发送第二变量;所述UI线程用于确定所述第二变量和预置参数之和为所述第一变量的值;
预置参数可以是一个非零常数。例如:第一变量为a,第二变量为b,预置参数是1,则第一变量与第二变量的关系为:a=b+1。
步骤102,在预置时间间隔后,根据所述第一变量的值和所述第二变量的值,生成消息卡顿检测结果;
通过对比第一变量的值与第二变量的值之间的关系,确定是否检测到UI线程发生了消息处理卡顿的情况。如果发生了消息处理卡顿的情况,则生成消息卡顿检测结果。
步骤103,在绘制所述应用程序的界面时,确定所述界面中两帧之间的界面绘制时间间隔;
在绘制应用程序的界面时,是通过依次绘制多帧图像,由多帧图像生成所述界面,则绘制界面相邻两帧中,会存在界面绘制时间间隔。
步骤104,根据所述界面绘制时间间隔和预置时间阈值,生成界面卡顿检测结果;
可以对比界面绘制时间间隔与预置时间阈值,判断是否发生了界面绘制卡顿情况,如果发生了界面绘制卡顿情况,则生成界面卡顿检测结果。
步骤105,展示所述消息卡顿检测结果,和/或所述界面卡顿检测结果。
在生成所述消息卡顿检测结果后,在所述应用程序中展示所述消息卡顿检测结果;和/或,在生成所述界面卡顿检测结果后,在所述应用程序中展示所述界面卡顿检测结果。
在本发明实施例中,通过向应用程序的UI线程设置有第一变量,在向UI线程发送第二变量后,根据第一变量的值和第二变量的值,判断UI线程是否发生了消息处理卡顿情况,进而可以生成消息卡顿检测结果。在绘制应用程序的界面时,通过确定界面中两帧之间的界面绘制时间间隔,并根据界面绘制时间间隔和预置时间阈值,判断在绘制应用程序的界面时候是否发生了卡顿情况,进而可以生成界面卡顿检测结果,然后对消息卡顿检测结果和/或界面卡顿检测结果进行展示,从而实现针对应用程序的不同性能同时进行卡顿检测,并直观地将相应得到的卡顿检测结果进行展示,提高了对应用程序的卡顿检测效率,无需测试人员对卡顿场景进行复原。
参照图2,示出了本发明的一种卡顿检测方法实施例二的步骤流程图,所述方法可以应用于应用程序,所述应用程序设置有UI线程,所述UI线程设置有第一变量;所述方法具体可以包括:
步骤201,向所述UI线程发送第二变量;所述UI线程用于确定所述第二变量和预置参数之和为所述第一变量的值;
预置参数可以是一个常数。例如:第一变量为a,第二变量为b,预置参数是1,则第一变量与第二变量的关系为:a=b+1。
在本发明的一种优选实施例中,所述第一变量具有初始值;步骤201可以包括:
子步骤S11,启动监控线程;
应用程序可以嵌入有SDK(Software Development Kit,软件开发工具包),由SDK提供监控线程。
子步骤S12,采用所述监控线程生成第二变量;所述第二变量的值与所述初始值相等;
在监控线程中定义第二变量,第二变量是一个已赋值的量,例如,第二变量可以是b=1。
子步骤S13,采用所述监控线程将所述第二变量发送至所述UI线程。
监控线程将第二变量发送至UI线程。UI线程中变量a的初始值为1,在UI线程接收到监控线程发送的b=1后,根据第一变量与第二变量的关系进行赋值运算,即采用第一变量与第二变量的关系:a=b+1,进行运算。
可以在监控线程中设置有死循环指令,使得监控线程按照一定的时间间隔,不断向UI线程发送第二变量,从而不断检测UI线程是否发生卡顿。
其中,监控线程可以在首次向UI线程后,再次向UI线程发送第二变量之前,对第二变量进行等差赋值。例如,监控线程第一次向UI线程发送的第二变量的值为1,第二次向UI线程发送的第二变量的值为2,第三次向UI线程发送的第二变量的值为3。
步骤202,在预置时间间隔后,根据所述第一变量的值和所述第二变量的值,生成消息卡顿检测结果;
根据第一变量的值和第二变量的值,可以判断UI线程是否发生消息处理卡顿情况。具体地,由于第一变量的初始值与第二变量的值相等,如果UI线程发生了消息处理卡顿情况,则UI线程未进行赋值运算,此时第一变量的值与第二变量的值相等。如果UI线程没有发生消息处理卡顿情况,则UI线程进行赋值运算,在UI线程进行赋值运算后,第一变量的值与第二变量的值不相等,从而可以根据第一变量和第二变量的值,判断UI线程是否发生了消息处理卡顿情况,进而生成消息卡顿检测结果。
在本发明的一种优选实施例中,步骤202可以包括:
子步骤S21,在预置时间间隔后,检测所述第一变量的值和第二变量的值;
在监控线程发送所述第二变量后,监控线程进入睡眠状态(即监控线程暂停工作)。监控线程在预置时间间隔(例如:5秒)后,检测第一变量的值,以及其自身的第二变量的值。
子步骤S22,判断所述第一变量的值与所述第二变量的值是否相等;
对比第一变量的值和第二变量的值。
子步骤S23,若所述第一变量的值与所述第二变量的值相等,则生成消息卡顿检测结果。
当在第二预置阈值时间后,第一变量的值与第二变量的值相等,则表示第一变量的值仍然为初始值,UI线程没有对第一变量进行赋值运算,则确定UI线程发生了消息处理卡顿情况,生成相应的消息卡顿检测结果。
在本发明的一种优选实施例中,所述子步骤S23可以包括:
子步骤S231,确定所述应用程序当前运行的第一线程;
当确定第一变量的值与第二变量的值相等时,确定应用程序当前运行的第一线程。
子步骤S232,获取与所述第一线程对应的第一执行信息;
第一执行信息可以包括但不限于第一线程的标识信息、第一线程处理的信息、调用所述第一线程的运行对象的信息。其中,运行对象可以是指应用程序中的方法信息,方法信息是应用程序中的类信息的一部分。例如:第一执信信息可以包括:线程名称、第一线程处理的文件的名称、第一线程中处理的堆栈信息、应用程序的网络状态信息和所处硬件环境的状态信息等。
子步骤S233,基于所述第一执行信息,生成所述消息卡顿检测结果。
采用第一执行信息中的一个或多个,组成消息卡顿检测结果。
步骤203,在绘制所述应用程序的界面时,确定所述界面中两帧之间的界面绘制时间间隔;
在绘制应用程序的界面时,是通过依次绘制多帧图像,由多帧图像生成所述界面,则绘制界面相邻两帧中,会存在界面绘制时间间隔。
在本发明的一种优选实施例中,所述应用程序设置有绘制数据库,所述绘制数据库记录有绘制界面的历史帧对应的时间戳;所述确定所述界面中两帧之间的界面绘制时间间隔的步骤,可以包括:
子步骤S31,确定绘制所述界面当前帧的第一时间戳;
应用程序安装在软件系统中,应用程序中可以嵌入有SDK,可以在SDK中定义一个监控类信息,该监控类信息用于与软件系统中的指定接口(例如:Choreographer.FrameCallback接口)连接,用于获取应用程序绘制界面时,对应当前时刻的时间戳,在所述监控类信息中定义有一个绘制数据库,绘制数据库用于对获取到的时间戳进行保存。采用所述监控类信息,在应用程序进行界面绘制时,确定绘制界面当前帧的第一时间戳。
子步骤S32,在所述绘制数据库中,提取绘制所述界面上一帧的第二时间戳;
子步骤S33,计算所述第一时间戳与所述第二时间戳的差值;
子步骤S34,确定所述第二时间戳与所述第一时间戳的差值为所述界面绘制时间间隔。
例如:第一时间戳为:14时30分2.025487秒,第二时间戳为14时30分3.102544秒,则可以得到第二时间戳与第一时间戳的差值为1.077057秒,1.077057秒则为当前的界面绘制时间间隔。
步骤204,根据所述界面绘制时间间隔和预置时间阈值,生成界面卡顿检测结果;
可以对比界面绘制时间间隔与预置时间阈值,判断是否发生了界面绘制卡顿情况,如果发生了界面绘制卡顿情况,则生成界面卡顿检测结果。
在本发明的一种优选实施例中,步骤204可以包括:
子步骤S41,判断所述界面绘制时间间隔是否大于预置时间阈值;
子步骤S42,若所述界面绘制时间间隔大于预置时间阈值,则生成所述界面卡顿检测结果。
对比界面绘制时间间隔与预置时间阈值的大小关系,界面绘制时间间隔不大于预置时间阈值时,则确定应用程序没有出现界面绘制卡顿情况;当界面绘制时间间隔大于预置时间阈值时,确定应用程序出现了界面绘制卡顿情况,并生成界面卡顿检测结果。
在本发明的一种优选实施例中,所述子步骤S42可以包括:
子步骤S41,确定所述应用程序当前运行的第二线程;
当确定界面绘制时间间隔大于预置时间阈值时,确定应用程序当前运行的第二线程。
子步骤S42,获取与所述第二线程对应的第二执行信息;
第二执行信息可以包括但不限于第二线程的标识信息、第二线程处理的信息、调用所述第二线程的运行对象的信息。其中,运行对象可以是指应用程序中的方法信息,方法信息是应用程序中的类信息的一部分。例如:第二执信信息可以包括:线程名称、第二线程处理的文件的名称、第二线程中处理的堆栈信息、应用程序的网络状态信息和所处硬件环境的状态信息等。
子步骤S43,基于所述第二执行信息,生成所述界面卡顿检测结果。
采用第二执行信息中的一个或多个,组成消息卡顿检测结果。
步骤205,生成告警弹窗;
在生成消息卡顿检测结果,和/或所述界面卡顿检测结果后,应用程序会立即生成一个告警弹窗。
步骤206,在所述告警弹窗中,展示所述消息卡顿检测结果,和/或所述界面卡顿检测结果。
在告警弹窗中,展示至少一个第一执行信息,和/或至少一个第二执行信息。
在本发明实施例中,通过启动用嵌入在应用程序中的SDK的监控线程,向应用程序中设置有第一变量的UI线程发送第二变量,当在第二预置时间后,第一变量的值和第二变量的值相等,则确定UI线程发生了消息处理卡顿情况,进而可以生成消息卡顿检测结果。在绘制应用程序的界面时,通过确定界面中两帧之间的界面绘制时间间隔,并当界面绘制时间间隔大于预置时间阈值时,确定在绘制应用程序的界面时发生了卡顿情况,进而可以生成界面卡顿检测结果,采用实时生成的告警弹窗,对消息卡顿检测结果和/或界面卡顿检测结果进行展示,从而实现针对应用程序的不同性能同时进行卡顿检测,并直观地将相应得到的卡顿检测结果进行展示,提高了对应用程序的卡顿检测效率,无需测试人员对卡顿场景进行复原。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图3,示出了本发明的一种卡顿检测装置实施例的结构框图,所述装置应用于应用程序,所述应用程序设置有UI线程,所述UI线程设置有第一变量;所述装置具体可以包括如下模块:
发送模块301,用于向所述UI线程发送第二变量;所述UI线程用于确定所述第二变量和预置参数之和为所述第一变量的值;
消息卡顿模块302,用于在预置时间间隔后,根据所述第一变量和所述第二变量,生成消息卡顿检测结果;
绘制模块303,用于在绘制所述应用程序的界面时,确定所述界面中两帧之间的界面绘制时间间隔;
界面卡顿模块304,用于根据界面绘制时间间隔,生成界面卡顿检测结果;
展示模块305,用于展示所述消息卡顿检测结果,和/或所述界面卡顿检测结果。
在本发明的一种优选实施例中,所述第一变量具有初始值;所述发送模块301包括:
启动子模块,用于启动监控线程;
变量生成子模块,用于采用所述监控线程生成第二变量;所述第二变量的值与所述初始值相等;
变量发送子模块,用于采用所述监控线程将所述第二变量发送至所述UI线程。
在本发明的一种优选实施例中,所述消息卡顿模块302包括:
变量检测子模块,用于在预置时间间隔后,检测所述第一变量的值和第二变量的值;
变量判断子模块,用于判断所述第一变量的值与所述第二变量的值是否相等;
消息卡顿生成子模块,用于若所述第一变量的值与所述第二变量的值相等,则生成消息卡顿检测结果。
在本发明的一种优选实施例中,所述消息卡顿生成子模块包括:
第一线程确定单元,用于确定所述应用程序当前运行的第一线程;
第一信息获取单元,用于获取与所述第一线程对应的第一执行信息;
消息卡顿结果单元,用于基于所述第一执行信息,生成所述消息卡顿检测结果。
在本发明的一种优选实施例中,所述应用程序设置有绘制数据库,所述绘制数据库记录有绘制界面的历史帧对应的时间戳;所述绘制模块303包括:
第一时间戳子模块,用于确定绘制所述界面当前帧的第一时间戳;
第二时间戳子模块,用于在所述绘制数据库中,提取绘制所述界面上一帧的第二时间戳;
时间戳计算子模块,用于计算所述第一时间戳与所述第二时间戳的差值;
时间间隔子模块,用于确定所述第二时间戳与所述第一时间戳的差值为所述界面绘制时间间隔。
在本发明的一种优选实施例中,所述界面卡顿模块304包括:
绘制时间判断子模块,用于判断所述界面绘制时间间隔是否大于预置时间阈值;
界面卡顿生成子模块,用于若所述界面绘制时间间隔大于预置时间阈值,则生成所述界面卡顿检测结果。
在本发明的一种优选实施例中,所述界面卡顿生成子模块包括:
第二线程单元,用于确定所述应用程序当前运行的第二线程;
第二信息单元,用于获取与所述第二线程对应的第二执行信息;
界面卡顿结果单元,用于基于所述第二执行信息,生成所述界面卡顿检测结果。
在本发明的一种优选实施例中,所述展示模块305包括:
弹窗生成子模块,用于生成告警弹窗;
结果展示子模块,用于在所述告警弹窗中,展示所述消息卡顿检测结果,和/或所述界面卡顿检测结果。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明一实施例还提供了电子设备,可以包括处理器、存储器及存储在存储器上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上述的卡顿检测方法的步骤。
本发明一实施例还提供了计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如上述的卡顿检测方法的步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种卡顿检测方法、装置、电子设备和存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种卡顿检测方法,其特征在于,应用于应用程序,所述应用程序设置有UI线程,所述UI线程设置有第一变量;所述方法包括:
按照一定的频率,不断向所述UI线程发送第二变量;所述UI线程用于确定所述第二变量和预置参数之和为所述第一变量的值;所述UI线程依次接收到的任意两个相邻第二变量的差值相等;
在预置时间间隔后,根据所述第一变量的值和所述第二变量的值,生成消息卡顿检测结果;
在绘制所述应用程序的界面时,确定所述界面中两帧之间的界面绘制时间间隔;
根据所述界面绘制时间间隔和预置时间阈值,生成界面卡顿检测结果;
展示所述消息卡顿检测结果,和/或所述界面卡顿检测结果;
所述应用程序设置有绘制数据库,所述绘制数据库记录有绘制界面的历史帧对应的时间戳;
所述确定所述界面中两帧之间的界面绘制时间间隔的步骤包括:
确定绘制所述界面当前帧的第一时间戳;
在所述绘制数据库中,提取绘制所述界面上一帧的第二时间戳;
计算所述第一时间戳与所述第二时间戳的差值;
确定所述第二时间戳与所述第一时间戳的差值为所述界面绘制时间间隔;
其中,消息卡顿检测的过程与界面卡顿检测的过程同时进行。
2.根据权利要求1所述的方法,其特征在于,所述第一变量具有初始值;所述向所述UI线程发送第二变量的步骤,包括:
启动监控线程;
采用所述监控线程生成第二变量;所述第二变量的值与所述初始值相等;
采用所述监控线程将所述第二变量发送至所述UI线程。
3.根据权利要求2所述的方法,其特征在于,所述在预置时间间隔后,根据所述第一变量和所述第二变量,生成消息处理检测结果的步骤,包括:
在预置时间间隔后,检测所述第一变量的值和第二变量的值;
判断所述第一变量的值与所述第二变量的值是否相等;
若是,则生成消息卡顿检测结果。
4.根据权利要求3所述的方法,其特征在于,所述生成所述消息卡顿检测结果的步骤,包括:
确定所述应用程序当前运行的第一线程;
获取与所述第一线程对应的第一执行信息;
基于所述第一执行信息,生成所述消息卡顿检测结果。
5.根据权利要求1所述的方法,其特征在于,所述根据界面绘制时间间隔和预置时间阈值,生成界面卡顿检测结果的步骤,包括:
判断所述界面绘制时间间隔是否大于预置时间阈值;
若是,则生成所述界面卡顿检测结果。
6.根据权利要求5所述的方法,其特征在于,所述生成界面卡顿检测节结果的步骤,包括:
确定所述应用程序当前运行的第二线程;
获取与所述第二线程对应的第二执行信息;
基于所述第二执行信息,生成所述界面卡顿检测结果。
7.根据权利要求6所述的方法,其特征在于,所述展示所述消息卡顿检测结果,和/或所述界面卡顿检测结果的步骤,包括:
生成告警弹窗;
在所述告警弹窗中,展示所述消息卡顿检测结果,和/或所述界面卡顿检测结果。
8.一种卡顿检测装置,其特征在于,应用于应用程序,所述应用程序设置有UI线程,所述UI线程设置有第一变量;所述应用程序设置有绘制数据库,所述绘制数据库记录有绘制界面的历史帧对应的时间戳;所述装置包括:
发送模块,用于按照一定的频率,不断向所述UI线程发送第二变量;所述UI线程用于确定所述第二变量和预置参数之和为所述第一变量的值;所述UI线程依次接收到的任意两个相邻第二变量的差值相等;
消息卡顿模块,用于在预置时间间隔后,根据所述第一变量和所述第二变量,生成消息卡顿检测结果;
绘制模块,用于在绘制所述应用程序的界面时,确定所述界面中两帧之间的界面绘制时间间隔;
所述绘制模块包括:
第一时间戳子模块,用于确定绘制所述界面当前帧的第一时间戳;
第二时间戳子模块,用于在所述绘制数据库中,提取绘制所述界面上一帧的第二时间戳;
时间戳计算子模块,用于计算所述第一时间戳与所述第二时间戳的差值;
时间间隔子模块,用于确定所述第二时间戳与所述第一时间戳的差值为所述界面绘制时间间隔;
界面卡顿模块,用于根据界面绘制时间间隔,生成界面卡顿检测结果;
展示模块,用于展示所述消息卡顿检测结果,和/或所述界面卡顿检测结果;
其中,消息卡顿检测的过程与界面卡顿检测的过程同时进行。
9.电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的卡顿检测方法的步骤。
10.计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的卡顿检测方法的步骤。
CN201811308521.8A 2018-11-05 2018-11-05 一种卡顿检测方法、装置、电子设备和存储介质 Active CN109446094B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811308521.8A CN109446094B (zh) 2018-11-05 2018-11-05 一种卡顿检测方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811308521.8A CN109446094B (zh) 2018-11-05 2018-11-05 一种卡顿检测方法、装置、电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN109446094A CN109446094A (zh) 2019-03-08
CN109446094B true CN109446094B (zh) 2022-05-17

Family

ID=65551029

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811308521.8A Active CN109446094B (zh) 2018-11-05 2018-11-05 一种卡顿检测方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN109446094B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109960659B (zh) * 2019-03-29 2022-11-01 阿波罗智联(北京)科技有限公司 用于检测应用程序的方法和装置
CN111131611A (zh) * 2019-12-18 2020-05-08 北京智明星通科技股份有限公司 一种用于解决手机游戏卡顿的提示方法、装置和移动终端
CN111367741B (zh) * 2020-02-28 2022-07-08 Oppo广东移动通信有限公司 用户界面卡顿检测方法与装置、电子设备
CN111949512A (zh) * 2020-07-09 2020-11-17 厦门美柚股份有限公司 应用程序的卡顿检测方法、装置、终端及介质
CN112527627B (zh) * 2020-11-02 2024-05-10 百果园技术(新加坡)有限公司 一种页面卡顿检测方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105740326A (zh) * 2016-01-21 2016-07-06 腾讯科技(深圳)有限公司 浏览器的线程状态监测方法及装置
CN106610881A (zh) * 2015-10-22 2017-05-03 阿里巴巴集团控股有限公司 提取程序无响应发生时函数栈的提取方法和装置
CN106776272A (zh) * 2016-11-11 2017-05-31 西北工业大学 嵌入式系统实时性能测试方法
CN107590015A (zh) * 2017-09-11 2018-01-16 北京京东尚科信息技术有限公司 监测主线程的阻塞的方法和装置
CN108512695A (zh) * 2018-03-12 2018-09-07 腾讯音乐娱乐科技(深圳)有限公司 监控应用卡顿的方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9405654B2 (en) * 2013-06-20 2016-08-02 Microsoft Technology Licensing, Llc Monitoring mobile application performance
CN107193515B (zh) * 2017-04-10 2023-03-14 腾讯科技(深圳)有限公司 动画显示流畅度的监控方法、装置及其设备
CN108519923A (zh) * 2018-03-01 2018-09-11 北京三快在线科技有限公司 一种卡顿检测方法及装置和电子设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106610881A (zh) * 2015-10-22 2017-05-03 阿里巴巴集团控股有限公司 提取程序无响应发生时函数栈的提取方法和装置
CN105740326A (zh) * 2016-01-21 2016-07-06 腾讯科技(深圳)有限公司 浏览器的线程状态监测方法及装置
CN106776272A (zh) * 2016-11-11 2017-05-31 西北工业大学 嵌入式系统实时性能测试方法
CN107590015A (zh) * 2017-09-11 2018-01-16 北京京东尚科信息技术有限公司 监测主线程的阻塞的方法和装置
CN108512695A (zh) * 2018-03-12 2018-09-07 腾讯音乐娱乐科技(深圳)有限公司 监控应用卡顿的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Android应用开发中ListView组件性能优化的研究";张延年 等;《现代计算机(专业版)》;20151225(第36期);第58-64页 *

Also Published As

Publication number Publication date
CN109446094A (zh) 2019-03-08

Similar Documents

Publication Publication Date Title
CN109446094B (zh) 一种卡顿检测方法、装置、电子设备和存储介质
CN109063969B (zh) 一种账户风险评估的方法及装置
CN111935319B (zh) 一种基于车辆终端系统的监控处理方法、系统及相关设备
CN108875837A (zh) 用于测试目标识别设备的装置及方法
CN110290280B (zh) 一种终端状态的识别方法、装置及存储介质
CN113132690B (zh) 施工过程视频的生成方法、装置以及电子设备、存储介质
CN110544491A (zh) 一种实时关联说话人及其语音识别结果的方法及装置
CN112054822A (zh) 蓝牙测试方法及装置、电子设备、存储介质
CN114200877B (zh) 一种用电设备的监控方法和装置
CN111861488A (zh) 机器学习模型对比方法及装置
CN110807394A (zh) 情绪识别方法、试驾体验评估方法、装置、设备与介质
CN111583251A (zh) 一种视频图像分析方法、装置及电子设备
CN108108299B (zh) 一种用户界面测试方法及装置
CN109491907A (zh) 一种卡顿检测方法、装置、电子设备和存储介质
CN115514620B (zh) 一种异常检测的方法和云网络平台
WO2023280117A1 (zh) 指示信号识别方法、设备以及计算机存储介质
CN115601731A (zh) 一种针对用户的驾驶状态识别方法、设备及介质
CN114419823A (zh) 一种访客管理方法和装置
CN112102837B (zh) 家电设备及家电设备的拾音检测方法、装置
US20220115031A1 (en) Sponsorship credit period identification apparatus, sponsorship credit period identification method and program
EP3457609A1 (en) System and method for computing of anomalies based on frequency driven transformation and computing of new features based on point anomaly density
CN108345982A (zh) 一种扶贫预警方法及装置
CN113538809B (zh) 一种基于自助设备的数据处理方法和装置
CN116382721B (zh) 一种智能交互平板的录屏方法及录屏装置
CN113516085A (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