确定应用程序的展示界面是否是白屏的方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种确定应用程序的展示界面是否是白屏的方法及装置。
背景技术
传统技术中,在确定应用程序的展示界面是否是白屏时,此处的白屏是指未显示界面元素的展示界面;可以预先记录展示界面是白屏时的屏幕像素(也称默认像素),之后通过实时获取当前终端屏幕的像素,并将当前终端屏幕的像素与默认像素进行比对,来确定展示界面是否是白屏。然而在终端上进行像素级别的比对非常耗能;此外,当展示界面上显示等待动画(如,显示“菊花”形状的转动图标)等信息时,由于该等待动画并不属于上述应用程序的展示界面的界面元素,因此显示等待动画的展示界面应该也是白屏,然而由于显示等待动画后的终端屏幕的像素与默认像素也不相同,因此,上述方法会误将显示等待动画的展示界面确定为不是白屏,这影响了应用程序的展示界面是否是白屏的确定的准确性,进而这浪费了计算机资源。
发明内容
本申请描述了一种确定应用程序的展示界面是否是白屏的方法及装置,可以提高对应用程序的展示界面是否是白屏的确定的准确性。
第一方面,提供了一种确定应用程序的展示界面是否是白屏的方法,该方法包括:
获取最近启动的第一应用程序;
在终端屏幕上捕获由所述第一应用程序发起的第一绘画事件;
判断所述第一绘画事件是否与预设的绘画事件相同;
当所述第一绘画事件与预设的绘画事件不相同时,确定所述第一应用程序的展示界面不是白屏,所述白屏是指未显示界面元素的展示界面。
第二方面,提供了一种确定应用程序的展示界面是否是白屏的装置,该装置包括:
获取单元,用于获取最近启动的第一应用程序;
捕获单元,用于在终端屏幕上捕获由所述获取单元获取的所述第一应用程序发起的第一绘画事件;
判断单元,用于判断所述捕获单元捕获的所述第一绘画事件是否与预设的绘画事件相同;
确定单元,用于当所述第一绘画事件与预设的绘画事件不相同时,确定所述第一应用程序的展示界面不是白屏,所述白屏是指未显示界面元素的展示界面。
本申请提供的确定应用程序的展示界面是否是白屏的方法及装置,首先获取最近启动的第一应用程序,之后在终端屏幕上获取由第一应用程序发起的第一绘画事件;在第一绘画事件与预设的绘画事件不相同的情况下,确定应用程序的展示界面不是白屏。也即本申请是在确定第一绘画事件不为预设的绘画事件时,才确定应用程序的展示界面不是白屏,由此,可以提高对应用程序的展示界面是否是白屏的确定的准确性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请提供的应用程序的展示界面的示意图之一;
图2A为本申请提供的应用程序的展示界面的示意图之二;
图2B为本申请提供的应用程序的展示界面的示意图之三;
图2C为本申请提供的应用程序的展示界面的示意图之四;
图3为本申请提供的用于确定应用程序的展示界面是否是白屏的***示意图;
图4为本申请一种实施例提供的确定应用程序的展示界面是否是白屏的信息交互图;
图5为本申请另一种实施例提供的确定应用程序的展示界面是否是白屏的装置示意图。
具体实施方式
下面结合附图,对本发明的实施例进行描述。
本申请实施例提供的确定应用程序的展示界面是否是白屏的方法适用于在移动终端的终端屏幕上启动某一应用程序(也称业务)之后,确定该应用程序的展示界面是否是白屏的场景,此处的移动终端包括但不限于手机以及平板电脑等,而移动终端的操作***可以为IOS***等。在本申请中,某一应用程序被启动后,终端屏幕的具体变化过程为:由当前的展示界面(如,包含该应用程序的图标的界面)切换为空白的展示界面或者显示加载动画或者等待动画的展示界面,之后再切换为显示应用程序的界面元素的展示界面,此处的界面元素可以包括但不限于标识(Logo)图片、文字或者按钮等,在此说明书中,将上述空白的展示界面或者显示加载动画或者等待动画的展示界面称为白屏,也即本申请中的白屏是指在启动某一应用程序之后,未显示界面元素的展示界面。
以应用程序为支付宝为例来说,当启动支付宝之后,当应用程序的展示界面如图1所示时,则该应用程序的展示界面不是白屏,而当应用程序的展示界面如图2A-2C所示时,该应用程序的展示界面是白屏。当然,在实际应用中,不是白屏的情况还可以包括其它展示界面,如,只展示了支付宝展示界面的部分界面元素的界面;此外,白屏的情况也还可以包括其它展示界面,如,显示其它等待动画(如,滚动的进度条等)的展示界面,本申请对此不作限定。
本申请提供的确定应用程序的展示界面是否是白屏的方法可以由图3所示的***执行,如图3所示,该***可以包括:屏幕监控器301、界面监控器302以及活动筛选器303。
其中,屏幕监控器301用于在监控到终端屏幕发生变化时,调用钩子(hook)函数:actionForLayer:forKey来在终端屏幕上进行绘画,也即执行绘画事件。此处的hook函数:actionForLayer:forKey是通过对IOS***的actionForLayer:forKey进行重新编写来得到的。此外,上述终端屏幕发生变化可以是由终端屏幕的像素、颜色等发生变化而引发的,也可以是由用户在终端屏幕上启动了某一应用程序而引发的。
需要说明的是,当由于用户在终端屏幕上启动了某一应用程序,而引发屏幕监控器301调用钩子(hook)函数:actionForLayer:forKey执行绘画事件时,IOS***可以查询到该绘画事件的发起者(也称事件源),也即可以查询到上述应用程序。此处,IOS***查询绘画事件的发起者属于常规技术手段,本申请在此不复赘述。
界面监控器302用于在监控到终端屏幕上有应用程序被启动时,调用hook函数:viewDidLoad来记录当前启动的应用程序。此处的hook函数:viewDidLoad可以是通过对IOS***的viewDidLoad进行重新编写来得到的。此外,上述记录当前启动的应用程序可以是指记录当前启动的应用程序的名称或者标识等信息。在一个例子中,界面监控器302可以在事件对应表中记录当前启动的应用程序的名称或者标识信息等,此外,该事件对应表中还可以记录与该应用程序对应的事件的事件名称等。表1为本申请提供的一种事件对应表中记录的内容。
表1
应用程序的名称 |
事件名称 |
余额宝 |
事件1 |
余额宝 |
事件2 |
活动筛选器303用于根据事件对应表中记录的应用程序,对屏幕监控器301执行的绘画事件进行过滤。举例来说,事件对应表中记录的内容如表1所示,则在屏幕监控器301执行绘画事件之后,IOS***可以首先查询该绘画事件的发起者,如果该绘画事件的发起者为“余额宝”,则保留该绘画事件,否则如果该绘画事件的发起者为“转账”,则过滤该绘画事件。
此外,活动筛选器303还用于根据白名单事件表中的事件,对保留的绘画事件进行过滤。在一个例子中,白名单事件表中可以包括绘制等待动画的事件或者绘制加载动画的事件等,如,绘制转动的“菊花”图标的事件以及绘制“Loading”的事件。具体地,如果保留的绘画事件为白名单中的事件,则直接过滤该保留的绘画事件,否则将保留的绘画事件选取为目标事件;之后,可以根据是否执行了该目标事件,来确定应用程序的展示界面是否是白屏。
由图3所示的***来确定应用程序的展示界面是否是白屏的方法流程图可以如图4所示,该方法具体可以包括如下步骤:
步骤410,获取最近启动的第一应用程序。
需要说明的是,对于用户在终端屏幕上先后启动两个应用程序,本申请只关注在后启动的应用程序,该在后启动的应用程序也称为最近启动的应用程序。举例来说,假设用户先启动了“余额宝”,之后又启动了“转账”,则“转账”即为最近启动的应用程序。
上述第一应用程序可以为在移动终端的终端屏幕上有对应的图标的应用程序,如,“支付宝”等,也可以为应用程序内部的子应用程序,该子应用程序在应用程序的展示界面上有对应的图标和/或文字等,如,“支付宝”内部的业务,包括“余额宝”以及“转账”等,只需要其具有对应的展示界面即可,本申请对此不作限定。
在一种实现方式中,步骤410具体可以包括:
步骤A:实时监控终端屏幕上针对任一应用程序的启动事件。
上述启动事件可以是由用户点击任一应用程序对应的图标或者文字触发。
步骤B:当监控到启动事件时,将任一应用程序获取为最近启动的第一应用程序。
具体地,当监控到针对任一应用程序的启动事件时,界面监控器302就会调用hook函数:viewDidLoad记录第一应用程序,此处,记录第一应用程序可以理解为记录第一应用程序的名称或者标识等信息,由此便实现了对最近启动的第一应用程序的获取。在一个例子中,获取的最近启动的第一应用程序可以记录到事件对应表中,该事件对应表可以如表1所示。
步骤420,在终端屏幕上捕获由第一应用程序发起的第一绘画事件。
其中,第一绘画事件可以为由第一应用程序发起的任一绘画事件。
此处,可以通过屏幕监控器301来监控第一绘画事件,在监控到该第一绘画事件之后,可以查询该第一绘画事件的发起者,若其发起者为第一应用程序,则捕获该第一绘画事件,否则忽略该第一绘画事件。需要说明是,通常在终端屏幕上先后启动多个应用程序时,该多个应用程序都可以发起绘画事件,但是由于本申请只关注后启动的应用程序的展示界面是不是白屏,因此,该步骤中只捕获后启动的第一应用程序的第一绘画事件。
举例来说,假设用户在终端屏幕上分别启动了“余额宝”和“转账”两个应用程序,其中,“转账”为后启动的应用程序,则“余额宝”和“转账”都可以发起绘画事件,但是本申请只捕获“转账”发起的绘画事件。
步骤430,判断第一绘画事件是否与预设的绘画事件相同。
此处,可以由活动筛选器303判断第一绘画事件是否与预设的绘画事件相同。
在实际应用中,当用户在终端屏幕上启动某一应用程序之后,在该应用程序的展示界面显示界面元素之前,终端屏幕上会展示等待动画或者加载动画等信息,由于该等待动画或者加载动画的信息并不是展示界面的界面元素,因此,将显示等待动画或者加载动画等信息的展示界面也作为白屏。本申请可以将显示等待动画或者加载动画等信息的展示界面进行过滤。
具体地,本申请可以将绘制等待动画的事件或者绘制加载动画的事件作为预设的绘画事件,在一个例子中,还可以将该预设的会话事件添加到白名单事件表中;在捕获到第一应用程序的第一绘画事件之后,可以将该第一绘画事件与事件白名单表中的预设的绘画事件进行比对,若比对不一致,则说明第一绘画事件与预设的绘画事件不相同。
步骤440,当第一绘画事件与预设的绘画事件不相同时,确定应用程序的展示界面不是白屏。
此处,白屏是指未显示界面元素的展示界面。
需要说明的是,由于白名单表中的预设的绘画事件包括了绘制等待动画的事件或者绘制加载动画的事件,因此,当第一绘画事件与预设的绘画事件不相同时,该第一绘画事件即为绘制第一应用程序的展示界面的信息的事件,从而就可以确定应用程序的展示界面不是白屏。
在一种应用场景下,可以统计捕获到与预设的绘画事件不同的第一绘画事件的耗时时间,此处,耗时时间的统计可以通过计时器或者具有计时功能的软件模块来实现。由于只有在终端屏幕上执行了与预设的绘画事件不同的第一绘画事件,应用程序的展示界面才不是白屏,因此上述耗时时间也可以称为白屏时间。该白屏时间会给用户带来不好的体验,因此就需要尽可能的缩短上述白屏时间。具体地,可以判断统计的耗时时间是否超过预设时长(如,3秒),该预设时长可以根据经验值设定,若超过,则输出报告信息。在一个例子中,输出的报告信息可以如下所示:
从上述报告信息可以看出,该报告信息中包括:设备名称(Device Name)、设备版本号(Device Version)、IOS***版本号(IOS Version)、应用程序版本号(App Version)、测试包版本(Build Version)、使用内存(Used Memory)、飞狐版本(FlyFox Version)、应用程序的名称(如,当时标题)以及运行结果(reason)等运行环境参数信息,其中,FlyFox指一种客户端监控插件。
在获取到上述报告信息之后,开发人员可以根据该报告信息,对相应的应用程序进行优化,从而缩短白屏时间,进而达到提高用户体验的目的。
在上述统计白屏时间的应用场景下,由于只有在捕获到与预设的绘画事件不同的第一绘画事件时,才可以确定白屏时间,那么在此处需要说明的是,如果捕获到的第一绘画事件与预设的绘画事件相同,则可以重复执行捕获由第一应用程序发起的其它绘画事件的步骤,直至其它绘画事件与预设的绘画事件不相同,也即直至可以确定应用程序的展示界面不是白屏。
需要说明的是,虽然在实际应用中,还可以通过人工运行终端屏幕上的各个应用程序来统计白屏时间,但是该方法效率低,且不能记录上述报告信息中的环境参数信息;此外,也可以通过博客***来获取用户反馈,之后根据用户反馈来统计白屏时间,但是,该方法也具有效率低、不能获取运行环境参数等信息的缺点。
综上,本申请可以提高对应用程序的展示界面是否是白屏的确定的准确性,并且可以提高白屏时间的统计效率。
与上述确定应用程序的展示界面是否是白屏的方法对应地,本申请实施例还提供的一种确定应用程序的展示界面是否是白屏的装置,如图5所示,该装置包括:
获取单元501,用于获取最近启动的第一应用程序。
获取单元501具体用于:
实时监控终端屏幕上针对任一应用程序的启动事件;
当监控到启动事件时,将任一应用程序获取为最近启动的第一应用程序。
捕获单元502,用于在终端屏幕上捕获由获取单元501获取的第一应用程序发起的第一绘画事件。
判断单元503,用于判断捕获单元502捕获的第一绘画事件是否与预设的绘画事件相同。
确定单元504,用于当第一绘画事件与预设的绘画事件不相同时,确定应用程序的展示界面不是白屏,白屏是指未显示界面元素的展示界面。
需要说明的是,获取单元501可以由图3中的界面监控器302来实现,捕获单元502可以由图3中的屏幕监控器301来实现,而判断单元503则可以由图3中的活动筛选器303来实现。
可选地,预设的绘画事件可以包括绘制等待动画的事件或者绘制加载动画的事件,确定单元504,还用于当第一绘画事件与预设的绘画事件相同时,确定应用程序的展示界面是白屏。
可选地,该装置还可以包括:执行单元505,用于重复执行捕获由第一应用程序发起的其它绘画事件的步骤,直至其它绘画事件与预设的绘画事件不相同,则确定应用程序的展示界面不是白屏。
此处的执行单元505也可以由屏幕监控器301来实现。
可选地,该装置还可以包括:
统计单元506,用于统计捕获到与预设的绘画事件不同的第一绘画事件的耗时时间;
输出单元507,用于若统计单元506统计的耗时时间超过预设时长,则输出报告信息,报告信息包括终端的运行环境参数信息。
本申请实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本申请提供的装置的具体工作过程,在此不复赘述。
本申请提供的确定应用程序的展示界面是否是白屏的装置,获取单元501获取最近启动的第一应用程序;捕获单元502在终端屏幕上捕获由第一应用程序发起的第一绘画事件;判断单元503判断第一绘画事件是否与预设的绘画事件相同;确定单元504当第一绘画事件与预设的绘画事件不相同时,确定应用程序的展示界面不是白屏。由此,可以提高对应用程序的展示界面是否是白屏的确定的准确性,并且可以提高白屏时间的统计效率。
需要说明的是,本申请提供的确定应用程序的展示界面是否是白屏的装置可以集成于应用程序的客户端监控插件中,如,当该装置用于确定“支付宝”的展示界面是否是白屏时,则该装置可以集成于“FlyFox”中,其中,“FlyFox”用于监测“支付宝”客户端运行时出现的问题,并提供运行时工具帮助确定问题。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。