CN109582536B - 应用程序无响应的上报方法、装置和计算机设备 - Google Patents

应用程序无响应的上报方法、装置和计算机设备 Download PDF

Info

Publication number
CN109582536B
CN109582536B CN201811307279.2A CN201811307279A CN109582536B CN 109582536 B CN109582536 B CN 109582536B CN 201811307279 A CN201811307279 A CN 201811307279A CN 109582536 B CN109582536 B CN 109582536B
Authority
CN
China
Prior art keywords
timer
thread
callback
reporting
sub
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
CN201811307279.2A
Other languages
English (en)
Other versions
CN109582536A (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.)
Guangzhou Cubesili Information Technology Co Ltd
Original Assignee
Guangzhou Cubesili Information Technology 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 Guangzhou Cubesili Information Technology Co Ltd filed Critical Guangzhou Cubesili Information Technology Co Ltd
Priority to CN201811307279.2A priority Critical patent/CN109582536B/zh
Publication of CN109582536A publication Critical patent/CN109582536A/zh
Application granted granted Critical
Publication of CN109582536B publication Critical patent/CN109582536B/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/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/328Computer systems status display

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供一种应用程序无响应的上报方法、装置和计算机设备,所述的方法包括:创建主线程的运行回路Runloop的观察者,并开启子线程;所述观察者监听到所述运行回路Runloop中应用程序组件的状态发生改变时,向所述子线程发送通知消息;所述子线程接收到通知消息时开始计时,若设定阀值到达时还未接收到所述观察者发送的关于所述应用程序组件的新的通知消息,上报应用程序无响应。本申请实施例实现了ANR的准确上报。

Description

应用程序无响应的上报方法、装置和计算机设备
技术领域
本申请涉及计算机技术领域,具体而言,本申请涉及一种应用程序无响应的上报方法、装置和计算机设备。
背景技术
如果应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让应用程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现ANR,而让用户每次都要处理这个对话框。而为了对出现ANR的应用程序进行改进,从而提高应用程序的性能,准确上报ANR至关重要,因此亟需一种能够准确上报ANR的方案。
发明内容
本申请针对现有方式的缺点,提出一种应用程序无响应的上报方法、装置和计算机设备,以实现ANR的准确上报。
本申请的实施例根据第一个方面,提供了一种应用程序无响应的上报方法,包括:
创建主线程的运行回路Runloop的观察者,并开启子线程;
所述观察者监听到所述运行回路Runloop中应用程序组件的状态发生改变时,向所述子线程发送通知消息;
所述子线程接收到通知消息时开始计时,若设定阀值到达时还未接收到所述观察者发送的关于所述应用程序组件的新的通知消息,上报应用程序无响应。
在一个实施例中,所述上报方法还包括:
所述子线程上报从开始计时到上报应用程序无响应期间内主线程的堆栈信息。
在一个实施例中,所述上报方法还包括:在所述运行回路Runloop中启动帧率检测计时器,在所述子线程中启动同步计时器;
所述子线程上报从开始计时到上报应用程序无响应期间内主线程的堆栈信息,包括:检测所述帧率检测计时器的回调和所述同步计时器的回调是否同步;若不同步,上报从开始计时到上报应用程序无响应期间内主线程的堆栈信息。
在一个实施例中,检测所述帧率检测计时器的回调和所述同步计时器的回调是否同步,包括:
在所述同步计时器回调时获取所述帧率检测计时器最后一次回调的时间;
计算所述同步计时器的当前时间与所述帧率检测计时器最后一次回调的时间的差值;
若所述差值大于预设的单个观察者回调处理时间,判定所述帧率检测计时器的回调和所述同步计时器的回调不同步,否则判定所述帧率检测计时器的回调和所述同步计时器的回调同步。
本申请的实施例根据第二个方面,还提供了一种应用程序无响应的上报装置,包括:
观察者创建模块,用于创建主线程的运行回路Runloop的观察者;
子线程开启模块,用于开启子线程;
观察者监听模块,用于监听到所述运行回路Runloop中应用程序组件的状态发生改变时,向所述子线程发送通知消息;
子线程检测模块,用于接收到通知消息时开始计时,若设定阀值到达时还未接收到所述观察者发送的关于所述应用程序组件的新的通知消息,上报应用程序无响应。
在一个实施例中,所述子线程检测模块还用于上报从开始计时到上报应用程序无响应期间内主线程的堆栈信息。
在一个实施例中,所述上报装置还包括计时器启动模块,用于在所述运行回路Runloop中启动帧率检测计时器,在所述子线程中启动同步计时器;
所述子线程检测模块包括:
检测单元,用于检测所述帧率检测计时器的回调和所述同步计时器的回调是否同步;
上报单元,用于在不同步时,上报从开始计时到上报应用程序无响应期间内主线程的堆栈信息。
在一个实施例中,所述检测单元包括:
时间获取子单元,用于在所述同步计时器回调时获取所述帧率检测计时器最后一次回调的时间;
差值计算子单元,用于计算所述同步计时器的当前时间与所述帧率检测计时器最后一次回调的时间的差值;
判定子单元,用于在所述差值大于预设的单个观察者回调处理时间时,判定所述帧率检测计时器的回调和所述同步计时器的回调不同步,否则判定所述帧率检测计时器的回调和所述同步计时器的回调同步。
本申请的实施例根据第三个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任意一项所述的应用程序无响应的上报方法。
本申请的实施例根据第四个方面,还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任意一项所述的应用程序无响应的上报方法。
上述的应用程序无响应的上报方法、装置和计算机设备,通过创建的观察者实现对Runloop事件的监听,从而在Runloop中应用程序组件的状态发生改变时及时通知开启的子线程,子线程接收到通知消息即开始计时,根据接收到新的通知消息的时间检测是否发生耗时操作,在发生耗时操作时上报ANR,保证了上报ANR时机的准确性。
本申请附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请一个实施例的应用程序无响应的上报方法的示意图;
图2为本申请另一个实施例的应用程序无响应的上报方法的示意图;
图3为本申请一个实施例的应用程序无响应的上报装置的示意图;
图4为本申请一个实施例的计算机设备的示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
如图1所示,在一个实施例中,一种应用程序无响应的上报方法,包括:
S110、创建主线程的运行回路Runloop的观察者,并开启子线程。
当一个程序启动时,就有一个进程被操作系统(OS)创建,与此同时一个线程也立刻运行,该线程通常叫做程序的主线程(Main Thread)。每个进程至少都有一个主线程,主线程的重要性体现在两方面:1.是产生其他子线程的线程;2.通常它最后完成执行,比如执行各种关闭动作。另外,每个线程都有一个唯一标示符,用来区分线程中的主次关系,线程唯一标示符包括:Thread.CurrentThread.ManagedThreadID,而被Thread包含的“方法体”或者“委托”均为子线程。
线程一般都是一次执行完毕任务后就进行销毁。而在线程中添加了runloop(运行回路),并运行起来,实际上是添加了一个do,while循环,这样线程的程序就一直卡在do,while循环上,相当于线程的任务一直没有执行完,所有线程一直不会销毁。
观察者设计模式定义了对象间的一种一对多的组合关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新。观察者模式有很多实现方式,从根本上说,该模式包含两个角色:观察者和被观察者。观察者和被观察者之间存在“观察”的逻辑关联,当被观察者发生改变的时候,观察者就会观察到这样的变化,并且做出相应的响应。
创建主线程Runloop all activities(应用程序组件)的observer(观察者),同时开启一个子线程,该子线程用于统计每次activity(应用程序组件)回调时的耗时。
S120、所述观察者监听到所述运行回路Runloop中应用程序组件的状态发生改变时,向所述子线程发送通知消息。
观察者用于监听主线程的Runloop中各个应用程序组件的状态。当监听到应用程序组件的状态发生改变时,观察者就向开启的子线程发送通知消息,通知子线程该应用程序组件的状态发生改变。
S130、所述子线程接收到通知消息时开始计时,若设定阀值到达时还未接收到所述观察者发送的关于所述应用程序组件的新的通知消息,上报应用程序无响应。
假设设定ANR上报时间阀值为a,子线程接收到观察者本次发送的通知消息后开始计时,如果a时间到达时未再接收到观察者发送的关于该应用程序组件的通知消息,则判定发生了耗时操作,此时上报ANR。
上述的应用程序无响应的上报方法可以应用在多种场景中,例如,应用于YY直播的iOS(苹果公司的移动操作系统)版本中等等,通过创建的观察者实现对Runloop事件的监听,从而在Runloop中应用程序组件的状态发生改变时及时通知开启的子线程,子线程接收到通知消息即开始计时,根据接收到新的通知消息的时间检测是否发生耗时操作,在发生耗时操作时上报ANR,保证了上报ANR时机的准确性。
为了供业务开发分析定位卡顿原因,在应用程序发生卡顿时需要自动获取堆栈信息并上报到后台,因此,在一个实施例中,所述上报方法还包括:所述子线程上报从开始计时到上报应用程序无响应期间内主线程的堆栈信息。在计算机领域,堆栈是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。当runloop某个activity执行了a时间后仍未回调观察者,说明发生了耗时操作,此时通过子线程捕获主线程的耗时操作堆栈信息(即从开始计时到上报ANR期间的堆栈信息)并上报。
本申请的发明人经研究发现,因为监听主线程runloop的observer不止步骤S110中创建的observer,还有很多系统的observer。如果在确定发生耗时操作时直接上报主线程的堆栈信息,会存在堆栈信息误报的情况。如A observer处理耗时4.5秒,B observer处理耗时达到0.5秒后,触上报阀值a时间,此时因Aobserver的堆栈信息已丢失,上报的是Bobserver的堆栈信息,而理论上应该上报的Aobserver的堆栈信息。
为了解决堆栈信息的误报问题,本申请以帧率检测来准确定位耗时操作堆栈信息,从而上报的该堆栈信息能反应整个ANR耗时分布,帮助业务开发准确定位问题。因此,在一个实施例中,所述上报方法还包括:在所述运行回路Runloop中启动帧率检测计时器,在所述子线程中启动同步计时器;所述子线程上报从开始计时到上报应用程序无响应期间内主线程的堆栈信息,包括:检测所述帧率检测计时器的回调和所述同步计时器的回调是否同步;若不同步,上报从开始计时到上报应用程序无响应期间内主线程的堆栈信息。
在一个实施例中,检测所述帧率检测计时器的回调和所述同步计时器的回调是否同步,包括:
在所述同步计时器回调时获取所述帧率检测计时器最后一次回调的时间;
计算所述同步计时器的当前时间与所述帧率检测计时器最后一次回调的时间的差值;
若所述差值大于预设的单个观察者回调处理时间,判定所述帧率检测计时器的回调和所述同步计时器的回调不同步,否则判定所述帧率检测计时器的回调和所述同步计时器的回调同步。
本实施例在主线程中另外启动了一个计时器A(帧率检测),在子线程启动计时器B(同步),启动计时器A和启动计时器B的时机可以根据实际需要确定,如在创建观察者的时候启动计时器A和计时器B,或者在创建观察者之后的一小段时间内启动计时器A和计时器B,等等。在主线程发生ANR时,计时器A的回调也会被停止,计时器B回调时去读取计时器A最后一次回调的时间At,将计时器B当前时间Bt(计时器B回调时的时间)与时间At作差值,当Bt-At大于预设的单个Observer回调处理时间Pt时,上报当前主线程的堆栈信息,此时上报的堆栈信息就是真正耗时的堆栈信息,其中,单个Observer回调处理时间Pt可以根据经验进行设置。
为了更好的理解上述应用程序无响应的上报方法,下面结合一个具体实施例进行介绍。
如图2所示,在一个实施例中,一种应用程序无响应的上报方法,包括:
S1、创建主线程Runloop的观察者,开启子线程,在主线程Runloop中启动用于检测主线程帧率的帧率检测计时器,在子线程中添加同步计时器;
S2、创建的观察者监听主线程Runloop中activity的各种状态,当runloop某个activity状态发送改变时向子线程发送通知消息S1;
S2、子线程在接收到通知消息S1时开始计时,通过回调的耗时判断是否发生ANR,若在阀值a时间内该activity未对观察者回调,则子线程在阀值a时间内不会接收到通知消息S2,则判定发生ANR,上报ANR;
S3、同步计时器回调时子线程获取帧率检测计时器最后一次回调的时间,根据同步计时器的当前时间和帧率检测计时器最后一次回调的时间判断两者回调是否同步,如果不同步,意味着发生卡顿,则上报主线程当前耗时操作的堆栈信息。
上述应用程序无响应的上报方法,在保证准确捕获ANR的同时,能准确获取到发生ANR期间的耗时操作堆栈信息,帮助业务开发更准确的解决问题,以进一步提高应用程序性能。
基于同一发明构思,本申请还提供一种应用程序无响应的上报装置,下面结合附图对本申请上报装置的具体实施方式进行详细描述。
如图3所示,在一个实施例中,一种应用程序无响应的上报装置,包括:
观察者创建模块210,用于创建主线程的运行回路Runloop的观察者;
子线程开启模块220,用于开启子线程;
观察者监听模块230,用于监听到所述运行回路Runloop中应用程序组件的状态发生改变时,向所述子线程发送通知消息;
子线程检测模块240,用于接收到通知消息时开始计时,若设定阀值到达时还未接收到所述观察者发送的关于所述应用程序组件的新的通知消息,上报应用程序无响应。
在一个实施例中,所述子线程检测模块240还用于上报从开始计时到上报应用程序无响应期间内主线程的堆栈信息。
在一个实施例中,所述上报装置还包括计时器启动模块250,用于在所述运行回路Runloop中启动帧率检测计时器,在所述子线程中启动同步计时器;
所述子线程检测模块240包括:
检测单元241,用于检测所述帧率检测计时器的回调和所述同步计时器的回调是否同步;
上报单元242,用于在不同步时,上报从开始计时到上报应用程序无响应期间内主线程的堆栈信息。
在一个实施例中,检测单元241包括:
时间获取子单元2411,用于在所述同步计时器回调时获取所述帧率检测计时器最后一次回调的时间;
差值计算子单元2412,用于计算所述同步计时器的当前时间与所述帧率检测计时器最后一次回调的时间的差值;
判定子单元2413,用于在所述差值大于预设的单个观察者回调处理时间时,判定所述帧率检测计时器的回调和所述同步计时器的回调不同步,否则判定所述帧率检测计时器的回调和所述同步计时器的回调同步。
上述应用程序无响应的上报装置的其它技术特征与上述应用程序无响应的上报方法的技术特征相同,在此不予赘述。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任意一项所述的应用程序无响应的上报方法。其中,所述存储介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-OnlyMemory,只读存储器)、RAM(Random AcceSS Memory,随即存储器)、EPROM(EraSableProgrammable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(ElectricallyEraSable Programmable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,存储介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。可以是只读存储器,磁盘或光盘等。
本申请实施例还提供一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任意一项所述的视频封面校验方法。
图4为本申请计算机设备的结构示意图,包括处理器320、存储装置330、输入单元340以及显示单元350等器件。本领域技术人员可以理解,图4示出的结构器件并不构成对所有计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件。存储装置330可用于存储应用程序310以及各功能模块,处理器320运行存储在存储装置330的应用程序310,从而执行设备的各种功能应用以及数据处理。存储装置330可以是内存储器或外存储器,或者包括内存储器和外存储器两者。内存储器可以包括只读存储器、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)、快闪存储器、或者随机存储器。外存储器可以包括硬盘、软盘、ZIP盘、U盘、磁带等。本申请所公开的存储装置包括但不限于这些类型的存储装置。本申请所公开的存储装置330只作为例子而非作为限定。
输入单元340用于接收信号的输入。输入单元340可包括触控面板以及其它输入设备。触控面板可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并根据预先设定的程序驱动相应的连接装置;其它输入设备可以包括但不限于物理键盘、功能键(比如播放控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。显示单元350可用于显示用户输入的信息或提供给用户的信息以及计算机设备的各种菜单。显示单元350可采用液晶显示器、有机发光二极管等形式。处理器320是计算机设备的控制中心,利用各种接口和线路连接整个电脑的各个部分,通过运行或执行存储在存储装置330内的软件程序和/或模块,以及调用存储在存储装置内的数据,执行各种功能和处理数据。
在一实施方式中,计算机设备包括一个或多个处理器320,以及一个或多个存储装置330,一个或多个应用程序310,其中所述一个或多个应用程序310被存储在存储装置330中并被配置为由所述一个或多个处理器320执行,所述一个或多个应用程序310配置用于执行以上实施例所述的应用程序无响应的上报方法。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
应该理解的是,在本申请各实施例中的各功能单元可集成在一个处理模块中,也可以各个单元单独物理存在,也可以两个或两个以上单元集成于一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (8)

1.一种应用程序无响应的上报方法,其特征在于,包括:
创建主线程的运行回路Runloop的观察者,并开启子线程;
所述观察者监听到所述运行回路Runloop中应用程序组件的状态发生改变时,向所述子线程发送通知消息;
所述子线程接收到通知消息时开始计时,若设定阀值到达时还未接收到所述观察者发送的关于所述应用程序组件的新的通知消息,上报应用程序无响应;
在所述运行回路Runloop中启动帧率检测计时器,在所述子线程中启动同步计时器;在所述帧率检测计时器的回调和所述同步计时器的回调不同步时,所述子线程上报从开始计时到上报应用程序无响应期间内主线程的堆栈信息。
2.根据权利要求1所述的应用程序无响应的上报方法,其特征在于,所述在所述帧率检测计时器的回调和所述同步计时器的回调不同步时,所述子线程上报从开始计时到上报应用程序无响应期间内主线程的堆栈信息,包括:
检测所述帧率检测计时器的回调和所述同步计时器的回调是否同步;
若不同步,所述子线程上报从开始计时到上报应用程序无响应期间内主线程的堆栈信息。
3.根据权利要求2所述的应用程序无响应的上报方法,其特征在于,所述检测所述帧率检测计时器的回调和所述同步计时器的回调是否同步,包括:
在所述同步计时器回调时获取所述帧率检测计时器最后一次回调的时间;
计算所述同步计时器的当前时间与所述帧率检测计时器最后一次回调的时间的差值;
若所述差值大于预设的单个观察者回调处理时间,判定所述帧率检测计时器的回调和所述同步计时器的回调不同步,否则判定所述帧率检测计时器的回调和所述同步计时器的回调同步。
4.一种应用程序无响应的上报装置,其特征在于,包括:
观察者创建模块,用于创建主线程的运行回路Runloop的观察者;
子线程开启模块,用于开启子线程;
观察者监听模块,用于监听到所述运行回路Runloop中应用程序组件的状态发生改变时,向所述子线程发送通知消息;
子线程检测模块,用于接收到通知消息时开始计时,若设定阀值到达时还未接收到所述观察者发送的关于所述应用程序组件的新的通知消息,上报应用程序无响应;
计时器启动模块,用于在所述运行回路Runloop中启动帧率检测计时器,在所述子线程中启动同步计时器;在所述帧率检测计时器的回调和所述同步计时器的回调不同步时,通过子线程检测模块的上报单元上报从开始计时到上报应用程序无响应期间内主线程的堆栈信息。
5.根据权利要求4所述的应用程序无响应的上报装置,其特征在于,
所述子线程检测模块包括:
检测单元,用于检测所述帧率检测计时器的回调和所述同步计时器的回调是否同步;
上报单元,用于在不同步时,上报从开始计时到上报应用程序无响应期间内主线程的堆栈信息。
6.根据权利要求5所述的应用程序无响应的上报装置,其特征在于,所述检测单元包括:
时间获取子单元,用于在所述同步计时器回调时获取所述帧率检测计时器最后一次回调的时间;
差值计算子单元,用于计算所述同步计时器的当前时间与所述帧率检测计时器最后一次回调的时间的差值;
判定子单元,用于在所述差值大于预设的单个观察者回调处理时间时,判定所述帧率检测计时器的回调和所述同步计时器的回调不同步,否则判定所述帧率检测计时器的回调和所述同步计时器的回调同步。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至3中任意一项所述的应用程序无响应的上报方法。
8.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至3中任意一项所述的应用程序无响应的上报方法。
CN201811307279.2A 2018-11-05 2018-11-05 应用程序无响应的上报方法、装置和计算机设备 Active CN109582536B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811307279.2A CN109582536B (zh) 2018-11-05 2018-11-05 应用程序无响应的上报方法、装置和计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811307279.2A CN109582536B (zh) 2018-11-05 2018-11-05 应用程序无响应的上报方法、装置和计算机设备

Publications (2)

Publication Number Publication Date
CN109582536A CN109582536A (zh) 2019-04-05
CN109582536B true CN109582536B (zh) 2022-04-12

Family

ID=65921352

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811307279.2A Active CN109582536B (zh) 2018-11-05 2018-11-05 应用程序无响应的上报方法、装置和计算机设备

Country Status (1)

Country Link
CN (1) CN109582536B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110377341B (zh) * 2019-06-10 2022-05-03 北京字节跳动网络技术有限公司 一种监听无响应异常的方法、装置、介质和电子设备
CN111338835A (zh) * 2020-02-24 2020-06-26 网易(杭州)网络有限公司 一种数据处理方法及装置
CN112346926B (zh) * 2020-10-16 2024-10-08 北京金山云网络技术有限公司 资源状态监控方法、装置及电子设备
CN112764959B (zh) * 2021-01-27 2023-05-16 抖音视界有限公司 应用程序卡死问题的监测方法、装置、设备及存储介质
CN114741063B (zh) * 2022-04-06 2023-08-22 山东赤子城网络技术有限公司 一种基于Lua语言的编程框架实现方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104516803A (zh) * 2013-09-27 2015-04-15 腾讯科技(深圳)有限公司 一种电子设备信息监控方法、系统及电子设备
CN107102936A (zh) * 2017-05-27 2017-08-29 腾讯科技(深圳)有限公司 一种流畅度的评估方法和移动终端以及存储介质
CN108197032A (zh) * 2018-01-23 2018-06-22 武汉斗鱼网络科技有限公司 Ios应用的主线程卡顿监测方法、介质、设备及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8286139B2 (en) * 2008-03-19 2012-10-09 International Businesss Machines Corporation Call stack sampling for threads having latencies exceeding a threshold

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104516803A (zh) * 2013-09-27 2015-04-15 腾讯科技(深圳)有限公司 一种电子设备信息监控方法、系统及电子设备
CN107102936A (zh) * 2017-05-27 2017-08-29 腾讯科技(深圳)有限公司 一种流畅度的评估方法和移动终端以及存储介质
CN108197032A (zh) * 2018-01-23 2018-06-22 武汉斗鱼网络科技有限公司 Ios应用的主线程卡顿监测方法、介质、设备及系统

Also Published As

Publication number Publication date
CN109582536A (zh) 2019-04-05

Similar Documents

Publication Publication Date Title
CN109582536B (zh) 应用程序无响应的上报方法、装置和计算机设备
CN102761439B (zh) Pon接入系统中基于看门狗的异常检测记录装置及方法
CN109752047A (zh) 基于温湿度的机房告警方法、装置及存储介质
CN108132735B (zh) 终端与应用控制方法
CN108875837A (zh) 用于测试目标识别设备的装置及方法
CN104065526B (zh) 一种服务器故障报警的方法和装置
WO2017045533A1 (zh) 在应用程序的预设界面显示用户设备状态的方法和装置
CN111382026B (zh) 卡顿监控方法、装置、系统、存储介质和计算机设备
CN103268277A (zh) 一种输出日志信息的方法及系统
JP2006277115A (ja) 異常検出プログラムおよび異常検出方法
US10496128B2 (en) Method for obtaining timestamp and computer device using the same
CN109783311A (zh) 断点行为的监控处理方法、装置、设备及可读存储介质
CN110224885A (zh) 设备监控的告警方法、装置、存储介质及电子设备
CN113835985A (zh) 一种监测卡顿、分析卡顿原因的方法、装置及设备
US9430318B2 (en) Health monitoring and recovery for infrastructure devices
CN113806183A (zh) 应用卡顿处理方法、装置、设备、存储介质和程序产品
CN113190427A (zh) 卡顿监控方法、装置、电子设备及存储介质
CN108920337A (zh) 一种设备异常信息展示方法和计算机设备
CN108984380A (zh) 一种基于Linux系统的服务器测试方法、装置及介质
CN109117191A (zh) 一种电器重启的方法、装置、设备及存储介质
CN117093441B (zh) 电子设备的性能监控方法及装置
CN106482742B (zh) 计步数据的获取方法及装置
CN105224426A (zh) 物理主机故障检测方法、装置及虚机管理方法、系统
CN107133130A (zh) 计算机运行监测方法和装置
JP2017207903A (ja) 処理装置、方法及びプログラム

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210115

Address after: 511442 3108, 79 Wanbo 2nd Road, Nancun Town, Panyu District, Guangzhou City, Guangdong Province

Applicant after: GUANGZHOU CUBESILI INFORMATION TECHNOLOGY Co.,Ltd.

Address before: 511442 29 floor, block B-1, Wanda Plaza, Huambo business district, Panyu District, Guangzhou, Guangdong.

Applicant before: GUANGZHOU HUADUO NETWORK TECHNOLOGY Co.,Ltd.

EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20190405

Assignee: GUANGZHOU HUADUO NETWORK TECHNOLOGY Co.,Ltd.

Assignor: GUANGZHOU CUBESILI INFORMATION TECHNOLOGY Co.,Ltd.

Contract record no.: X2021440000054

Denomination of invention: Reporting method, device and computer equipment for application program non response

License type: Common License

Record date: 20210208

GR01 Patent grant
GR01 Patent grant