应用程序的响应状态的确定方法及装置与流程

文档序号:12801905阅读:152来源:国知局
应用程序的响应状态的确定方法及装置与流程
本申请涉及计算机
技术领域
,尤其涉及一种应用程序的响应状态的确定方法及装置。
背景技术
:传统技术中,一般通过统计应用程序执行业务的耗时时间或者通过人工的方式,来确定应用程序的响应状态,然而统计耗时时间的方式需要对上述应用程序本身进行修改,这会极大地增加开发人员的工作量;而人工的方式,会影响应用程序的响应状态确定的效率。技术实现要素:本申请描述了一种应用程序的响应状态的确定方法及装置,以提高应用程序的响应状态确定的效率。第一方面,提供了一种应用程序的响应状态的确定方法,该方法包括:当监测到目标应用程序启动时,创建相应的分线程;通过所述分线程从与主线程对应的存储单元中获取所述主线程的多个响应结果;根据所述多个响应结果,确定所述主线程的响应状态;根据所述主线程的响应状态,确定所述目标应用程序的响应状态。第二方面,提供了一种应用程序的响应状态的确定装置,该装置包括:创建单元,用于当监测到目标应用程序启动时,创建相应的分线程;获取单元,用于通过所述创建单元创建的所述分线程从与主线程对应的存储单元中获取所述主线程的多个响应结果;确定单元,用于根据所述获取单元获取的所述多个响应结果,确定所述主线程的响应状态;所述确定单元,还用于根据所述主线程的响应状态,确定所述目标应用程序的响应状态。本申请提供的应用程序的响应状态的确定方法及装置,通过获取主线程的多个响应结果,来确定主线程的响应状态,之后根据主线程的响应状态,来确定应用程序的响应状态;也即本申请可以自动地根据主线程的状态来确定应用程序的响应状态,无需对应用程序本身作出修改,从而可以减少开发人员的工作量,且可以提高应用程序的响应状态确定的效率。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图1为本申请提供的确定应用程序的响应状态的系统示意图;图2为本申请一种实施例提供的确定应用程序的响应状态的方法流程图;图3为本申请另一种实施例提供的确定应用程序的响应状态的装置示意图。具体实施方式下面结合附图,对本发明的实施例进行描述。本申请实施例提供的应用程序的响应状态的确定方法适用于对移动终端上的应用程序的响应状态为响应或者不响应进行确定的场景,此处的移动终端包括但不限于手机以及平板电脑等,该移动终端的操作系统可以为ios系统;上述应用程序可以为在移动终端的屏幕上有对应的图标的应用程序,如,“支付宝”等,也可以为应用程序内部的子应用程序,该子应用程序在应用程序的展示界面上有对应的图标和/或文字等,如,“支付宝”内部的业务,包括“余额宝”以及“转账”等。上述应用程序的响应状态为响应是指可以接收用户输入的指令,且可以根据该指令执行相应的操作;而应用程序的响应状态为不响应是指该应用程序长时间卡住不动,且不对用户输入的指令作出任何响应,在此说明书中,可以将应用程序的响应状态为不响应称为卡顿。本申请提供的应用程序的响应状态的确定方法可以由图1所示的系统执行,如图1所示,该系统可以包括:主线程访问器101和主线程查询器102。主线程访问器101,用于在监测到目标应用程序启动时,通过移动终端的操作系统提供的应用程序编程接口(applicationprogramminginterface,api)函数创建相应的分线程,该分线程为访问主线程的响应结果所建立的线程。具体地,主线程访问器101在创建相应的分线程之后,还可以通过该分线程向主线程查询器102发送查询请求,来访问主线程的响应结果;并根据响应结果,确定主线程的响应状态;之后再根据主线程的响应状态,确定目标应用程序的响应状态。此处,根据主线程的响应状态确定目标应用程序的响应状态的原理如下:在目标应用程序启动后,操作系统对目标应用程序的更新以及对用户输入指令(也称用户操作)的响应都是由主线程完成的,其中,更新包括应用程序的展示界面颜色的更新(如,红色->蓝色)以及根据运算结果对展示界面的更新,当主线程的响应状态为不响应时,会导致目标应用程序无法更新以及对用户操作不响应的问题,也即只有在主线程的响应状态为响应时,目标应用程序的响应状态才为响应。此外,主线程访问器101还可以用于为上述分线程启动定时器,从而实现周期性地通过分线程对主线程的响应结果进行访问,也即当该定时器的计时时间到达时,通过分线程访问主线程的响应结果。再者,主线程访问器101还可以用于在确定目标应用程序的响应状态为不响应时,输出报告信息,以便开发人员根据该报告信息,对目标应用程序进行优化。主线程查询器102,用于周期性查询主线程当前所处的状态,并根据其当前所处的状态,确定主线程的响应结果。主线程查询器102具体可以通过调用函数:cfrunloopruninmode来查询主线程当前所处的状态,其中,主线程当前所处的状态包括:wait锁状态、繁忙状态以及空闲状态等,其中,繁忙状态也称工作状态,在主线程当前所处的状态为工作状态时,其无法响应用户输入。具体地,当主线程当前所处的状态为wait锁状态或者繁忙状态时,确定主线程的响应结果为不响应,而当主线程当前所处的状态为空闲状态时,确定主线程的响应结果为响应。可选地,主线程查询器102可以在本地维护存储单元(也可以称为主线程状态队列),之后当每次确定到主线程的响应结果时,可以将该响应结果存储到上述存储单元中。在一个例子中,存储单元可以如表1所示。表1查询次数响应结果1响应2不响应3响应4不响应5不响应6不响应需要说明的是,表1只是一种示例,并不作为对本申请的限制,在实际应用中,表1中的响应结果也可以表示为其它信息,如,空闲或者忙碌等;此外,表1可能会包含其它字段的内容,如,响应结果对应的权重值等。主线程查询器102,还用于接收主线程访问器101发送的查询请求,并根据该查询请求从主线程对应的存储单元(如,表1)中获取主线程的响应结果,之后将获取的响应结果返回给主线程查询器102。在主线程查询器102本地维护存储单元时,主线程访问器101还可以用于在根据主线程查询器102返回的响应结果,确定主线程的响应状态为响应时,向主线程查询器102发送清空指令,主线程查询器102在接收到上述清空指令之后,清空存储单元中的响应结果。主线程查询器102在清空存储单元中的响应结果之后,重新开始保存后续查询到的响应结果。在一个例子中,在清空存储单元中的响应结果之后,重新开始保存的后续查询到的响应结果可以如表2所示。表2查询次数响应结果7响应8不响应9响应需要说明的是,上述只是一种对主线程访问器101和主线程查询器102的功能的划分方法,在实际应用中,也可以由主线程查询器102在获取到多个响应结果之后,根据该多个响应结果确定主线程的响应状态,之后再由主线程查询器102将确定的主线程的响应状态返回给主线程访问器101,本申请对此不作限定。在本申请中,可以由图1所示的系统来确定应用程序的响应状态,但在执行该确定过程之前,可以由图1中的主线程状态查询器102周期性执行如下步骤:步骤a:查询主线程当前所处的状态。主线程查询器102具体可以通过调用函数:cfrunloopruninmode来查询主线程当前所处的状态,其中,主线程当前所处的状态包括:wait锁状态、繁忙状态以及空闲状态等。步骤b:根据主线程当前所处的状态,确定主线程的响应结果。当主线程当前所处的状态为wait锁状态或者繁忙状态时,确定主线程的响应状态为不响应,而当主线程当前所处的状态为空闲状态时,确定主线程的响应状态为响应。由此可以看出,本申请可以对多种导致主线程的响应状态为不响应的情况进行监控,如,主线程处于wait锁状态或者繁忙状态等,由此可以解决现有技术中,只能监测由于主线程处于wait锁状态而导致主线程的响应状态为不响应的局限性。步骤c:将响应结果存储到存储单元。在一个例子中,在周期性执行步骤a-步骤c的过程6次之后,存储单元可以如表1所示。在由图1中的主线程状态查询器102周期性执行步骤a-步骤c多次之后,就可以由图1所示的系统来确定应用程序的响应状态,其具体确定过程可以如图2所示,该方法具体可以包括如下步骤:步骤210,当监测到目标应用程序启动时,创建相应的分线程。此处的目标应用程序可以为在移动终端的屏幕上有对应的图标的应用程序,如,“支付宝”等,也可以为应用程序内部的子应用程序,该子应用程序在应用程序的展示界面上有对应的图标和/或文字等,如,“支付宝”内部的业务,包括“余额宝”以及“转账”等。主线程访问器101具体可以通过移动终端的操作系统提供的应用程序编程接口(applicationprogramminginterface,api)函数创建相应的分线程,该分线程为访问主线程的响应结果所建立的线程。步骤220,主线程访问器101通过分线程从与主线程对应的存储单元中获取主线程的多个响应结果。可选地,主线程访问器101在创建相应的分线程之后,可以在分线程中启动定时器,以便当该定时器的计时时间到达时,通过该分线程访问主线程的响应结果,由此来实现主线程访问器101周期性对主线程的响应结果的获取。步骤220具体可以为:主线程访问器101通过创建的分线程向主线程查询器102发送查询请求;主线程查询器102在接收到查询请求之后,从主线程的存储单元中获取多个响应结果,此处的多个响应结果可以是最近连续n次查询得到的n个响应结果(如,表1中第4-6次查询对应的3个响应结果),其中,n>=1,或者也可以是全部的响应结果(如,表1中6次查询得到的全部的响应结果);主线程查询器102在获取到多个响应结果之后,可以将该多个响应结果返回给主线程访问器101。步骤230,根据多个响应结果,确定主线程的响应状态。此处,可以由主线程访问器101根据多个响应结果,确定主线程的响应状态,其具体的确定过程可以为:从多个响应结果中获取响应结果为不响应的连续次数,若连续次数超过预设阈值,则确定主线程的响应状态为不响应;否则确定主线程的响应状态为响应。此处,预设阈值可以根据经验值设定。如前述例子,当主线程查询器102返回的多个响应结果为表1中第4-6次查询得到的3个响应结果时,则上述连续次数(也可以称为权重值)可以为3,而假设当预设阈值为2时,因为3>2(即超过预设阈值),所以主线程访问器101可以确定主线程的响应状态为不响应;否则,假设当预设阈值为3时,因为3=3(不超过预设阈值),所以线程访问器101可以确定主线程的响应状态为响应。当主线程查询器102返回的多个响应结果为表1中6次查询对应的全部的响应结果时,获取的连续次数也为3;在确定连续次数之后,确定主线程的响应状态的过程同上所述,在此不复赘述。可选地,在线程访问器101可以确定主线程的响应状态为响应时,可以向主线程查询器102发送清空指令,主线程查询器102在接收到该清空指令之后,可以清空存储单元中的多个响应结果,如可以清空表1中的6个响应结果;之后当周期到达时,重复执行上述步骤a-步骤c,以便在存储单元中保存最新查询的响应结果,保存最新查询的响应结果的存储单元可以如表2所示。步骤240,根据主线程的响应状态,确定目标应用程序的响应状态。此处,可以由主线程访问器101根据主线程的响应状态,确定目标应用程序的响应状态,其确定过程可以为:当主线程的响应状态为响应时,确定目标应用程序的响应状态为响应;当主线程的响应状态为不响应时,确定目标应用程序的响应状态为不响应。此处,由于在目标应用程序启动后,操作系统对目标应用程序的更新以及目标应用程序对用户操作的响应都是由主线程完成的,其中,更新包括应用程序的展示界面颜色的更新(如,红色->蓝色)以及根据运算结果对展示界面的更新,当主线程的响应状态为不响应时,会导致目标应用程序无法更新以及对用户操作不响应的问题,也即只有在主线程的响应状态为响应时,目标应用程序的响应状态才为响应。因此,本申请可以根据主线程的响应状态,确定目标应用程序的响应状态。可选地,在主线程访问器101确定目标应用程序的响应状态为不响应时,其还可以输出如下所示的报告信息:从上述报告信息可以看出,该报告信息中包括:设备名称(devicename)、设备版本号(deviceversion)、ios系统版本号(iosversion)、应用程序版本号(appversion)、测试包版本(buildversion)、使用内存(usedmemory)、飞狐版本(flyfoxversion)、应用程序的名称(如,当时标题)以及运行结果(reason)等运行环境参数信息,其中,flyfox指一种客户端监控插件。从而开发人员可以根据该报告信息,对目标应用程序进行优化。本申请提供的应用程序的响应状态的确定方法,通过获取主线程的多个响应结果,来确定主线程的响应状态,之后根据主线程的响应状态,来确定应用程序的响应状态;也即本申请可以自动地根据主线程的状态来确定应用程序的响应状态,无需对应用程序本身作出修改,从而可以减少开发人员的工作量,且可以提高应用程序的响应状态确定的效率。与上述应用程序的响应状态的确定方法对应地,本申请实施例还提供的一种应用程序的响应状态的确定装置,如图3所示,该装置包括:创建单元301,用于当监测到目标应用程序启动时,创建相应的分线程。获取单元302,用于通过创建单元301创建的分线程从与主线程对应的存储单元中获取主线程的多个响应结果。确定单元303,用于根据获取单元302获取的多个响应结果,确定主线程的响应状态。可选地,响应结果可以包括响应和不响应;确定单元303具体用于:从多个响应结果中获取响应结果为不响应的连续次数,若连续次数超过预设阈值,则确定主线程的响应状态为不响应;否则确定主线程的响应状态为响应。确定单元303,还用于根据主线程的响应状态,确定目标应用程序的响应状态。确定单元303具体用于:当主线程的响应状态为响应时,确定目标应用程序的响应状态为响应;当主线程的响应状态为不响应时,确定目标应用程序的响应状态为不响应。可选地,该装置还可以包括存储单元304,用于周期性执行如下步骤:查询主线程当前所处的状态;根据主线程当前所处的状态,确定主线程的响应结果;将响应结果存储到存储单元。可选地,该装置还可以包括:清空单元305,用于当确定主线程的响应状态为响应时,将存储单元304中的多个响应结果清空。本申请实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本申请提供的装置的具体工作过程,在此不复赘述。本申请提供的应用程序的确定装置,创建单元301当监测到目标应用程序启动时,创建相应的分线程;获取单元302通过分线程从与主线程对应的存储单元中获取主线程的多个响应结果;确定单元303根据多个响应结果,确定主线程的响应状。由此,可以减少开发人员的工作量,且可以提高应用程序的响应状态确定的效率。需要说明的是,本申请提供的应用程序的响应状态的确定装置可以集成于应用程序的客户端监控插件中,如,当确定装置用于确定“支付宝”的响应状态时,则该确定装置可以集成于“flyfox”中,其中,“flyfox”用于监测“支付宝”客户端运行时出现的问题,并提供运行时工具帮助确定问题。本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1