一种获取应用卡顿信息的方法及装置制造方法及图纸

技术编号:15982538 阅读:29 留言:0更新日期:2017-08-12 05:36
本发明专利技术提供一种获取应用卡顿信息的方法及装置。所述方法包括S1,通过第一监听线程监听应用程序的特定方法;S2,当所述第一监听线程检测到应用卡顿时,获取所述卡顿发生的第一开始时间和第一结束时间;S3,基于所述第一开始时间和第一结束时间,在方法调用统计队列中获取所述特定方法的调用信息,以获取卡顿信息。本发明专利技术所述方法能够直接定位到引起问题发生的是哪个方法执行耗时导致的,只需要针对耗时方法进行修改和优化,省去大量定位问题和查找卡顿原因的时间和精力,大大提高了优化效率,进而提高了应用的流畅度,提升了应用的体验性。

【技术实现步骤摘要】
一种获取应用卡顿信息的方法及装置
本专利技术涉及计算机
,更具体地,涉及一种获取应用卡顿信息的方法及装置。
技术介绍
应用程序的用户体验的一个关键指标是应用流畅度。当使用时应用时卡顿不流畅,用户的体验会很差;那么在应用程序开发和测试时应尽量找到这种卡顿问题并及时处理和解决。目前已有的技术方案大多只能检测到应用有卡顿,获取卡顿发生的时间以及卡顿了多长时间,并抓取当前线程的java堆栈信息。但往往很多时候卡顿并不是发生在抓取堆栈信息的时刻,因而在抓取堆栈信息的时刻抓取到的是一些正常的方法调用,并不能提供更多有效信息很好的帮助定位到问题。这种情况下,往往需要根据卡顿的时间点去查看日志,进行测试和调试,需要花费大量的时间和精力,却不一定能找到卡顿的问题所在。
技术实现思路
本专利技术提供一种克服上述问题或者至少部分地解决上述问题的获取应用卡顿信息的方法及装置。根据本专利技术的一个方面,提供一种获取应用卡顿信息的方法,包括:S1,通过第一监听线程监听应用程序的特定方法;S2,当所述第一监听线程检测到应用卡顿时,获取所述卡顿发生的第一开始时间和第一结束时间;S3,基于所述第一开始时间和第一结束时间,在方法调用统计队列中获取所述特定方法的调用信息,以获取卡顿信息。根据本专利技术的一个方面,还提供一种获取应用卡顿信息的装置,包括:监听模块,用于通过第一监听线程监听应用程序的特定方法;检测模块,用于当所述第一监听线程检测到应用卡顿时,获取所述卡顿发生的第一开始时间和第一结束时间;以及获取模块,用于基于所述第一开始时间和第一结束时间,在方法调用统计队列中获取所述特定方法的调用信息,以获取卡顿信息。本专利技术提出一种获取应用卡顿信息的方法及装置,根据卡顿发生的开始时间和结束时间,从方法调用统计队列中找出这段卡顿时间应用程执行的方法,最终获得这段卡顿时间耗时的内特定方法的调用信息。本专利技术所述方法能够直接定位到引起问题发生的是哪个方法执行耗时导致的,只需要针对耗时方法进行修改和优化,省去大量定位问题和查找卡顿原因的时间和精力,大大提高了优化效率,进而提高了应用的流畅度,提升了应用的体验性。附图说明图1为本专利技术实施例一种获取应用卡顿信息的方法流程图;图2为本专利技术实施例一种获取应用卡顿信息的方法的测试装置整体框架示意图。具体实施方式下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。以下实施例用于说明本专利技术,但不用来限制本专利技术的范围。如图1所示,一种获取应用卡顿信息的方法,包括:S1,通过第一监听线程监听应用程序的特定方法;S2,当所述第一监听线程检测到应用卡顿时,获取所述卡顿发生的第一开始时间和第一结束时间;S3,基于所述第一开始时间和第一结束时间,在方法调用统计队列中获取所述特定方法的调用信息,以获取卡顿信息。本实施例根据卡顿发生的开始时间和结束时间,从方法调用统计队列中找出这段卡顿时间应用程执行的方法,最终获得这段卡顿时间耗时的内特定方法的调用信息。本专利技术所述方法能够直接定位到引起问题发生的是哪个方法执行耗时导致的,只需要针对耗时方法进行修改和优化,省去大量定位问题和查找卡顿原因的时间和精力,大大提高了优化效率,进而提高了应用的流畅度,提升了应用的体验性。本实施例所述特定方法,是应用程序中需要进行监听的任意一个方法,可以是应用程序主程序方法,也可以应用程序的一个用户界面的方法,需要对那个程序方法进行监听,就通过所述第一监听线程进行监听,本实施例对此不作限定。作为一个可选的实施例,所述一种获取应用卡顿信息的方法还包括:A1,通过第二监听线程监听开发包内所有方法的调用信息,并将所述调用信息存入所述方法调用统计队列中。本实施例所述第二监听线程与第一监听线程各自独立执行,不具有同步关系,不存在交互,在上述S1、S2和S3执行的任意时间,本实施例第二监听线程都在执行,互相不影响。所述第一监听线程在监听到应用卡顿后,需要用到所述第二监听线程记录的方法调用统计队列的数据。本实施例通过第二监听线程预先获取开发包内的所有方法的调用信息,并将所有方法的调用信息都记录下来,存入方法调用统计队列中,以便发生卡顿时可以通过预先记录的各方法的调用信息,来判断发生卡顿的程序方法。所述开发包,是指实现应用程序的某个功能的开发代码。在一个应用程序中,根据不同的功能划分,可以有一个或多个开发包。本实施例中,所述开发包内的所有方法,可以是一个开发包的所有方法,也可以是多个开发包内的所有方法,也可以是全部开发包内的所有方法,所述S1中所述特定方法是所述开发包的所有方法中的一个方法。本实施例对此不作限定。当在多个开发包的所有方法进行监听时,比在一个开发包的所有方法进行监听,程序所消耗的资源会更多,具体选择哪一种方式可以根据具体需要而定。作为一个可选的实施例,所述A1进一步包括:A1.1,在所述应用程序执行时,获取所述开发包内所有方法的每一次执行的第二开始时间和第二结束时间;A1.2,当所述第二结束时间和第二开始时间的差值大于预定统计时间值时,将所述方法的调用信息存入所述方法调用统计队列中。具体的,所述调用信息包括:方法的类名、函数名和代码行。具体的,所述方法调用统计队列的关键值为所述方法的耗时时间,所述耗时时间是指所述方法的第二结束时间与第二开始时间的差值。本实施例第二监听线程伴随应用程序的执行过程而执行,持续记录应用程序执行时所有方法的每一次执行的开始时间和结束时间。由于应用程序中大部分方法都是正常的不耗时的,为了避免统计到的大量正常不耗时的方法影响问题的分析,本实施例将所述第二结束时间和第二开始时间的差值小于所述预定统计时间值的调用信息全部过滤,不保存,而只保存所述第二结束时间和第二开始时间的差值大于所述预定统计时间值,这样可以大大减少所述方法调用统计队列的数据量,减轻应用程序的统计压力,同时可以简化后面通过所述方法调用统计队列来查找卡顿信息,缩短分析时间。本实施例中所述方法调用统计队列记录了应用执行时的每一个方法执行的顺序,时间点及耗时等信息。通过这样的记录,可以保证当卡顿发生时,根据卡顿发生的开始时间和结束时间从数据队列中获取到准确有效的程序方法,解决了卡顿发生时无法准确获取到方法的调用信息,无法准确定位到引起问题的方法。本实施例中,具体的预定统计时间值,可以根据程序方法正常执行所需要消耗时间以及用户体验要求来定义,例如当一个特定方法正常执行需要16ms时,可以定义所述预定统计时间值为10ms。那么,在应用程序执行过程中,所有执行耗时时间超过10ms的方法调用都将被记录到所述方法调用统计队列中,而所有执行耗时时间小于或等于10ms的方法调用都不会被记录到所述方法调用统计队列中。所述方法调用统计队列中的一个记录值,包括关键值,方法的类名、函数名和代码行,其中所述关键值用于对所述方法调用统计队列进行检索,可以提高检索效率。作为一个可选的实施例,所述S1进一步包括:S1.1,在所述特定方法中切入第一监听执行点;S1.2,利用所述第一监听执行点监听所述特定方法的执行过程。本实施例中,在应用程序的需要监听的方法中,即一个具体的实现方法,也即所述特定方法,添加用于监听的代码,即第一监听执行点。则当所述特定方法执行时,所述第一监听执行点就会执行,从而进行监听。作为一本文档来自技高网...
一种获取应用卡顿信息的方法及装置

【技术保护点】
一种获取应用卡顿信息的方法,其特征在于,包括:S1,通过第一监听线程监听应用程序的特定方法;S2,当所述第一监听线程检测到应用卡顿时,获取所述卡顿发生的第一开始时间和第一结束时间;S3,基于所述第一开始时间和第一结束时间,在方法调用统计队列中获取所述特定方法的调用信息,以获取卡顿信息。

【技术特征摘要】
1.一种获取应用卡顿信息的方法,其特征在于,包括:S1,通过第一监听线程监听应用程序的特定方法;S2,当所述第一监听线程检测到应用卡顿时,获取所述卡顿发生的第一开始时间和第一结束时间;S3,基于所述第一开始时间和第一结束时间,在方法调用统计队列中获取所述特定方法的调用信息,以获取卡顿信息。2.如权利要求1所述的方法,其特征在于,还包括:A1,通过第二监听线程监听开发包内所有方法的调用信息,并将所述调用信息存入所述方法调用统计队列中。3.如权利要求2所述的方法,其特征在于,所述A1进一步包括:A1.1,在所述应用程序执行时,获取所述开发包内所有方法的每一次执行的第二开始时间和第二结束时间;A1.2,当所述第二结束时间和第二开始时间的差值大于预定统计时间值时,将所述方法的调用信息存入所述方法调用统计队列中。4.如权利要求1-3任一项所述的方法,其特征在于,所述调用信息包括:方法的类名、函数名和代码行。5.如权利要求3所述方法,其特征在于,所述方法调用统计队列的关键值为所述方法的耗时时间,所述耗时时间是指所述方法的第二结束时间与第二开始时间的差值。6.如权利要求1所述方法,其特征在于,所述S1进一步包括:S1.1,在所述特定方法中切入第一监听执行...

【专利技术属性】
技术研发人员:龚宁陈少杰张文明
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1