事件数据的记录方法及装置、事件复原方法及装置与流程

文档序号:17586235发布日期:2019-05-03 21:20阅读:189来源:国知局
事件数据的记录方法及装置、事件复原方法及装置与流程

本申请涉及互联网数据处理技术领域,特别涉及一种事件数据的记录方法及装置,一种事件复原方法及装置,以及,计算机存储介质。



背景技术:

目前,越来越多的用户使用智能终端等来接入互联网,进行交流、学习、沟通等各种事项。app指的是智能终端上安装的第三方应用程序,用户可以使用app来进行娱乐或者学习等。由于受到app的版本或使用用户过多等情况的影响,以及可能受到智能终端的硬件环境等的影响,会存在用户在操作app时可能出现异常退出或者死机等情况。而很多app由于广受欢迎可能拥有着亿级的用户量,并且,不同的用户又使用不同的智能终端,这些智能终端又具备不同的分辨率或不同的操作系统版本等,这就使得对于不同的智能终端,无法准确或者完全搜集到各个智能终端上app在出现异常退出或者死机时,用户的当前操作。



技术实现要素:

发明人在研究过程中发现,现有技术可以采用埋点的方式来追踪用户的操作,由开发人员对采集到的埋点数据进行分析,从而确定用户在操作app时异常退出的原因。但是,现有的埋点数据只对开发人员可读,由开饭人员人工分析问题的有效性较低;并且,现有的埋点方式只进行了页面级别的埋点,并不能具体采集到用户在app内的各个具体操作以及在执行哪一个具体操作时app出现了异常退出,所以现有的埋点方式只能精确到用户在操作哪一个页面时出现了异常退出。

基于此,本申请提供了一种事件数据的记录方法和事件复原方法,用以采用启动app之后,记录用户在app内所有的事件的事件数据的方式,例如可以包括用户事件的事件数据,以及系统事件的事件数据等,如果检测到该app出现了闪退等异常退出,则在下一次app启动的时候,将记录的全部用户事件和系统事件的事件数据上传至服务器,以便在服务器根据全部用户事件和系统事件的事件数据来复原app内的所有用户操作和系统操作。

本申请还提供了一种事件数据的记录装置和事件复原装置,用以保证上述方法在实际中的实现及应用。

为了解决上述问题,本申请公开了一种事件数据的记录方法,其特征在于,包括:

响应于app的启动操作,记录所述app内触发的事件的事件数据;

判断所述app是否出现异常退出,如果是,则在所述app下一次启动后将所述事件数据上传至服务器;

如果否,则执行所述记录所述app内触发的事件的事件数据。

其中,所述事件包括用户事件和系统事件;所述记录所述app内触发的事件的事件数据,包括:

判断所述app内是否触发用户事件和系统事件,如果是,则确定所述用户事件和系统事件的类型;

依据所述用户事件和系统事件的类型,生成所述用户事件和系统事件的事件数据。

其中所述用户事件的类型包括:点击、长按、滑动和输入;

所述系统事件的类型包括:进入后台、进入前台和内存警告。

其中,所述依据所述用户事件和系统事件的类型,生成所述用户事件和系统事件的事件数据,包括:

获取所述点击事件的点击控件和点击时间作为所述点击事件的事件数据;

获取所述长按事件的长按控件和长按时间作为所述长按事件的事件数据;

获取所述滑动事件的滑动起始位置、滑动结束位置和滑动时间作为所述长按事件的事件数据;

获取所述输入事件的输入控件、输入内容和滑动时间作为所述输入事件的事件数据;

获取所述进入后台事件的进入后台时间作为所述进入后台事件的事件数据;

获取所述进入前台事件的进入前台时间作为所述进入前台事件的事件数据;

和/或,

获取所述内存警告事件的警告时间作为所述内存警告事件的事件数据。

其中,所述用户事件为滑动事件且存在多个滑动事件时,还包括:

依据各滑动事件的滑动起始位置和滑动结束位置,判断多个滑动事件是否可以进行合并,如果是,则将可以合并的各滑动事件进行合并。

其中,该方法还包括:

所述各用户事件和系统事件的事件数据,对各用户事件和系统事件进行顺序校验。

其中,如果所述app没有异常退出,则还包括:

判断所述app是否正常退出,如果是,则在下一次所述app启动时清除记录的事件数据;如果否,则执行所述记录所述app内触发的事件的事件数据。

本申请还提供了一种事件复现方法,包括:

响应于app内事件复现的触发操作,从服务器下载app内触发的事件的事件数据集合,所述事件数据集合包括:至少一个事件数据;

从所述事件数据集合中依次读取各事件数据,并依据所述事件数据对应的事件类型在所述app内执行各事件。

其中,所述事件包括用户事件和系统事件,所述依据所述事件数据对应的事件类型在所述app内执行各事件,包括:

依据所述事件数据的内容确定用户事件的类型,以及系统事件的类型;

依据各事件的类型在所述app内执行各用户事件和/或系统事件。

其中,所述依据各事件的类型在所述app内执行各用户事件和/或系统事件,包括:

在事件的类型为点击时,依据所述事件数据中的点击控件和点击时间执行点击事件;

在事件的类型为长按时,依据所述事件数据中的长按控件和长按时间执行长按事件;

在事件的类型为滑动时,依据所述事件数据中的滑动起始位置、滑动结束位置和滑动时间执行滑动事件;

在事件的类型为输入时,依据所述事件数据中的输入控件、输入内容和滑动时间执行输入事件;

在事件的类型为进入后台时,依据所述事件数据中的进入后台时间执行进入后台事件;

在事件的类型为进入前台时,依据所述事件数据中的进入前台时间执行进入前台事件;

和/或,

在事件的类型为内存警告时,依据所述事件数据中的警告时间执行内存警告事件。

本申请提供了一种事件数据的记录装置,包括:存储器和处理器,其中,

所述存储器,用于存储程序指令和/或数据;

所述处理器,用于读取所述存储器中存储的指令和/或数据,执行以下操作:

响应于app的启动操作,记录所述app内触发的事件的事件数据;

判断所述app是否出现异常退出,如果是,则在所述app下一次启动后将所述事件数据上传至服务器;

如果否,则执行所述记录所述app内触发的事件的事件数据。

其中,所述事件包括用户事件和系统事件;所述处理器用于记录所述app内触发的事件的事件数据,包括:

判断所述app内是否触发用户事件和系统事件,如果是,则确定所述用户事件和系统事件的类型;

依据所述用户事件和系统事件的类型,生成所述用户事件和系统事件的事件数据。

其中所述用户事件的类型包括:点击、长按、滑动和输入;

所述系统事件的类型包括:进入后台、进入前台和内存警告。

其中,所述处理器用于依据所述用户事件和系统事件的类型,生成所述用户事件和系统事件的事件数据,包括:

获取所述点击事件的点击控件和点击时间作为所述点击事件的事件数据;

获取所述长按事件的长按控件和长按时间作为所述长按事件的事件数据;

获取所述滑动事件的滑动起始位置、滑动结束位置和滑动时间作为所述长按事件的事件数据;

获取所述输入事件的输入控件、输入内容和滑动时间作为所述输入事件的事件数据;

获取所述进入后台事件的进入后台时间作为所述进入后台事件的事件数据;

获取所述进入前台事件的进入前台时间作为所述进入前台事件的事件数据;

和/或,

获取所述内存警告事件的警告时间作为所述内存警告事件的事件数据。

其中,所述用户事件为滑动事件且存在多个滑动事件时,所述处理器还用于:

依据各滑动事件的滑动起始位置和滑动结束位置,判断多个滑动事件是否可以进行合并,如果是,则将可以合并的各滑动事件进行合并。

其中,所述处理器还用于:

所述各用户事件和系统事件的事件数据,对各用户事件和系统事件进行顺序校验。

其中,如果所述app没有异常退出,则所述处理器还用于:

判断所述app是否正常退出,如果是,则在下一次所述app启动时清除记录的事件数据;如果否,则执行所述记录所述app内触发的事件的事件数据。

本申请提供了一种事件复现装置,包括:存储器和处理器,其中,

所述存储器,用于存储程序指令和/或数据;

所述处理器,用于读取所述存储器中存储的指令和/或数据,执行以下操作:

响应于app内事件复现的触发操作,从服务器下载app内触发的事件的事件数据集合,所述事件数据集合包括:至少一个事件数据;

从所述事件数据集合中依次读取各事件数据,并依据所述事件数据对应的事件类型在所述app内执行各事件。

其中,所述事件包括用户事件和系统事件,所述处理器依据所述事件数据对应的事件类型在所述app内执行各事件,包括:

依据所述事件数据的内容确定用户事件的类型,以及系统事件的类型;

依据各事件的类型在所述app内执行各用户事件和/或系统事件。

其中,所述处理器用于依据各事件的类型在所述app内执行各用户事件和/或系统事件,包括:

在事件的类型为点击时,依据所述事件数据中的点击控件和点击时间执行点击事件;

在事件的类型为长按时,依据所述事件数据中的长按控件和长按时间执行长按事件;

在事件的类型为滑动时,依据所述事件数据中的滑动起始位置、滑动结束位置和滑动时间执行滑动事件;

在事件的类型为输入时,依据所述事件数据中的输入控件、输入内容和滑动时间执行输入事件;

在事件的类型为进入后台时,依据所述事件数据中的进入后台时间执行进入后台事件;

在事件的类型为进入前台时,依据所述事件数据中的进入前台时间执行进入前台事件;

和/或,

在事件的类型为内存警告时,依据所述事件数据中的警告时间执行内存警告事件。

与现有技术相比,本申请实施例包括以下优点:

在本申请实施例中,在用户启动app之后,记录用户在app内所有的事件的事件数据,可以包括用户事件的事件数据,以及系统事件的事件数据等,如果检测到该app出现了闪退等异常退出,则在下一次app启动的时候,将记录的全部用户事件和系统事件的事件数据上传至服务器,以便在服务器根据全部用户事件和系统事件的事件数据来复原app内的所有用户操作和系统操作,例如模拟用户操作、系统通知等,从而不仅可以原原本本的还原app内的操作,还能更方便开发人员发现是哪一个用户事件或系统事件造成了闪退,从而更高效的对闪退原因进行确定和解决。

当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本申请的事件数据的记录方法实施例的示例性流程图;

图2是本申请的事件复原方法实施例的示例性流程图;

图3是本申请的事件数据的记录装置实施例的示例性结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

参考图1,示出了本申请一种事件数据的记录方法实施例的流程图,本实施例可以包括以下步骤:

步骤101:响应于app的启动操作,记录所述app内触发的事件的事件数据。

本实施例可以应用于智能终端上安装的app上。例如,对于app“手机购物”,则在用户打开该app“手机购物”的时候,就开始记录用户在该app内触发的各种事件的事件数据。其中,事件指的是用户在该app内的每一次操作;而事件数据指的是,用户的操作涉及的操作位置、操作时间以及事件类型等内容。

其中,在本实施例中,事件可以包括用户事件和系统事件,用户事件可以包括:点击、长按、滑动和输入等,系统事件可以包括:进入后台、进入前台和内存警告等。点击操作指的是,鼠标左边的单击操作或者在触摸屏上的触摸操作;长按操作指的是在触摸屏上点击时间大于一定时间的点击并选中操作;滑动操作指的是用户手指在触摸屏上持续点击且滑过一段距离的操作;输入操作指的是用户在app提供的输入框内键入内容的操作;进入后台指的是,用户的智能终端当前打开的界面并非该app的页面而是其他app的页面,例如,当前正在记录app“手机购物”内触发的事件,如果app“手机购物”进入后台,说明智能终端当前展示的页面并不是app“手机购物”内的页面,而是其他app的页面,app“手机购物”也未退出。

而在系统事件中,进入前台指的是,假设智能终端当前展示的不是app“手机购物”内的页面,但是用户并没有退出app“手机购物”,如果用户再触发app“手机购物”,在智能终端上当前显示的又会是app“手机购物”内的页面,则触发app“手机购物”内的页面重新展示为智能终端的当前页面的事件称为进入前台;内存警告指的是,用户在该app内执行操作的时候,智能终端的内存不足而弹出警告信息的系统操作。

因此,具体的步骤101可以包括以下步骤:

步骤a1:判断所述app内是否触发用户事件和系统事件,如果是,则进入步骤a2。

首先,在用户打开app且app运行之后,实时检测app内是否触发了用户事件,以及,是否触发系统事件。在实际应用中,为了保证对于该app内的各个事件都能够记录相应的事件数据,因此,在app内用户事件和系统事件都需要检测是否被触发。具体的,在该app内可以开启事件拦截,来检测该app内发生的各个事件。

步骤a2:确定所述用户事件和系统事件的类型。

如果在app内触发了事件,如果是用户事件,则确定用户事件的类型属于点击、输入、长按或者滑动中的哪一个类型,如果是系统事件,则确定是进入后台、进入前台或内存警告中的哪一个类型。

步骤a3:依据所述用户事件和系统事件的类型,生成所述用户事件和系统事件的事件数据。

在确定到用户事件或系统事件的类型后,根据事件是哪一种类型来生成对应的用户事件或系统事件的事件数据,事件数据包括了对应的事件的事件信息,例如,事件信息、事件发生的位置等信息。

具体的,对于各用户事件来讲,例如,点击事件的事件数据可以包括:点击事件的点击控件和点击时间,其中,点击控件可以用于表示点击操作在哪个控件上发生的,点击时间用于表示该点击事件发生时的系统时刻。长按事件的事件数据可以包括长按控件和长按时间,其中,长按控件用于表示该长按事件在哪个控件上发生的,长按时间可以表示该长按事件的发生时的系统时刻。滑动事件的事件数据可以包括:滑动事件的滑动起始位置、滑动结束位置和滑动时间,其中,滑动起始位置可以用于表示用户的手指在触发滑动事件的起始位置,滑动结束位置可以用于表示用户的手指在结束滑动时手指离开触摸屏时的离开位置,而滑动事件则指的是用户的手指从滑动起始位置滑动到滑动结束位置所占用的时间。输入事件的事件数据可以包括:输入控件、输入内容和输入时间,输入控件用于表示在哪个控件上执行了输入操作,而输入内容用于表示针对输入控件用户键入了哪些内容,例如文字、数字和字符等,输入时间用于表示用户在输入框中输入内容的系统时刻。

对于系统事件来说,进入后台事件的事件数据可以包括进入后台时间,例如app“手机购物”的页面从显示在当前屏幕上被用户可见的状态,切换到后台运行且其内部页面被用户不可见的状态的系统时刻;进入前台事件的事件数据可以包括进入前台时间,例如,app“手机购物”的页面从后台运行且其内部页面被用户不可见的状态,切换到其内部页面显示在当前屏幕上被用户可见的状态的系统时刻;而内存警告事件的事件数据指的是,在app内用户触发某个操作时智能终端弹出内存警告信息的系统时刻。

可以理解的是,在用户事件为滑动事件且在记录app的事件数据时用户触发了多个滑动事件,在步骤a3之后还可以包括:

步骤a4:依据各滑动事件的滑动起始位置和滑动结束位置,判断多个滑动事件是否可以进行合并,如果是,则将可以合并的各滑动事件进行合并。

针对于滑动事件,因为各滑动事件都涉及滑动起始位置和滑动结束位置,所以,有可能用户在触发了一个滑动事件之后,紧接着在上一个滑动事件的结束位置又触发了下一个滑动事件,例如,滑动事件s的滑动起始位置为s1,滑动结束位置为s2,而滑动事件t的滑动起始位置为s2,滑动结束位置为s3,可见,滑动事件s的滑动结束位置和滑动事件t的滑动起始位置相同。因此,对于这样的两个滑动事件,就可以将其认为是一个从s1位置滑动到s3位置的滑动事件。

因此,在实施本步骤的时候,可以判断多个滑动事件是否可以分别在上一个滑动事件的滑动结束位置连接至下一个滑动事件的滑动起始位置,如果可以,则说明这两个事件可以合并,并将合并后的事件作为需要上报的滑动事件,并且,可以依据合并之前的两个事件的事件数据得到合并后的新滑动事件的事件数据;如果不可以,则说明这两个事件不可以合并,则可以不执行步骤a4。

此外,在实际应用中,步骤101之后还可以包括以下步骤:

步骤b:依据各用户事件和系统事件的事件数据,对各用户事件和系统事件进行顺序校验。

在本步骤中,因为在app内发生了多个事件,并且很多事件的发生时刻可能相互接近,所以在步骤101执行时,或者步骤101执行之后,可以按照各个用户事件和系统事件的事件数据,进行顺序校验。顺序校验即是,按照各事件数据中记录的系统时刻,判断各个用户事件和系统事件的先后顺序是否准确,如过不准确可以更新各个用户事件和系统事件的时间顺序,如果准确,则可以确认用户事件和系统事件的事件数据校验通过。

步骤102:判断app是否出现异常退出,如果是,则进入步骤103;如果否,则进入步骤104。

在用户打开app之后,或者在步骤101执行的同时,还可以实时判断app是否出现了异常退出。具体的,可以根据操作系统是否有闪退通知来判断是否出现了app异常退出的情况。

步骤103:在下一次app启动时将事件数据上传至服务器。

在本实施例中,如果用户本次使用该app是闪退结束,即出现异常退出,那么在下一次app启动的时候,可以将步骤101记录的用户事件和系统事件的事件数据,上传至服务器,用于复现并排查闪退的原因。

步骤104:判断app是否正常退出,如果是,则进入步骤105;如果否,则返回步骤101。

如果app没有出现异常退出,则可以继续判断app是否是正常使用过程中的正常退出,如果是用户最终正常退出,那么表明步骤101记录的事件数据就可以无需用于复现并排查闪退的原因,如果用户也没有正常退出,说明用户还在该app内进行操作,或者该app还在运行状态,则继续执行步骤101即可。

步骤105:下一次所述app启动时清除记录的事件数据。

在下一次用户启动该app的时候,可以将步骤101记录并保存的事件数据删除,防止占用用户的存储空间。

可见,在本申请实施例中,可以在用户启动app之后,记录用户在app内所有的事件的事件数据,可以包括用户事件的事件数据,以及系统事件的事件数据等,如果检测到该app出现了闪退等异常退出,则在下一次app启动的时候,将记录的全部用户事件和系统事件的事件数据上传至服务器,以便在服务器根据全部用户事件和系统事件的事件数据来复原app内的所有用户操作和系统操作,例如模拟用户操作、系统通知等,从而不仅可以原原本本的还原app内的操作,还能更方便开发人员发现是哪一个用户事件或系统事件造成了闪退,从而更高效的对闪退原因进行确定和解决。

为了方便本领域技术人员对实施例1中的事件数据有更详细的了解,下面对各事件数据的数据格式进一步详细介绍。当然,下述内容都是本实施例的详情例子,不应将其理解为本申请的限定。

对于点击事件来讲,点击类型的事件数据格式一个示例性例子可以为:

{"type":"tap",

"timestamp":"1500449916",

"params":{

"percenty":0.6836734693877551,

"identifier":"uiwindow$0tmuitabbar:nth-child(0)tmtabbar:nth-child(0)tmtabbaritembutton*[text='精选']",

"percentx":0.41875,

"isweb":false}

}

在点击类型的事件数据中,“type”用于表示该事件的类型为点击“tap”,“timestamp”用于表示该点击事件发生的点击时间,“percentx”和“percenty”用于表示点击控件的位置,“identifier”则用于在事件复原的时候,来判断一个事件是否为点击事件。

对于滑动事件来讲,滑动类型事件的数据格式一个示例性例子可以为:

{

"type":"scroll",

"timestamp":"1500449916",

"params":{

"framex":320,

"framey":455,

"startx":0.6578125,

"movementx":0,

"starty":0.8362637362637363,

"identifier":"uiwindow$0tangramview:ali-delegate(tangramview)",

"movementy":6.5

}

}

在滑动事件的数据格式中,“type”用于表示该事件的类型为滑动“scroll”,“timestamp”用于表示该滑动事件发生的滑动时间,“startx”和“starty”用于表示滑动事件的滑动起始位置,“framex”和“framey”用于表示滑动事件的滑动结束位置,“movementx”和“movementy”用于表示滑动事件的分别屏幕上x轴和y轴的移动距离,“identifier”则用于在事件复原的时候,来判断一个事件是否为滑动事件。

对于长按事件来讲,长按类型事件的数据格式一个示例性例子可以为:

{

"type":"longpress",

"timestamp":"1500449916",

"params":{

"percenty":0.6836734693877551,

"identifier":"uiwindow$0tmuitabbar:nth-child(0)tmtabbar:nth-child(0)tmtabbaritembutton*[text='精选']",

"percentx":0.41875,

"isweb":false

}

}

在长按类型的事件数据中,“type”用于表示该事件的类型为长按“longpress”,“timestamp”用于表示该长按事件发生的长按时间,“percentx”和“percenty”用于表示长按控件的位置,“identifier”则用于在事件复原的时候,来判断一个事件是否为长按事件。

对于输入事件来讲,输入类型事件数据格式的一个示例性例子可以为:

{

"type":"input",

"timestamp":"1500449916",

"params":{

"identifier":"uiwindow$0tmuitabbar:nth-child(0)tmtabbar:nth-child(0)tmtabbaritembutton*[text='精选']",

"content":"testinput"

}

}

在输入类型的事件数据中,“type”用于表示该事件的类型为输入“input”,“timestamp”用于表示该输入事件发生的输入时间,“params”用于表示输入控件的位置,“identifier”则用于在事件复原的时候,来判断一个事件是否为输入事件,“content”用于表示用户在输入控件上输入的内容。

对于进入前台事件来讲,进入前台事件的数据格式的一个示例性例子可以为:

{

"type":"foreground",

"timestamp":"1500449916"

}

在进入前台类型的事件数据中,“type”用于表示该事件的类型为进入前台“foreground”,“timestamp”用于表示该进入前台事件发生的系统时间。

对于内存警告事件来讲,内存警告事件的数据格式的一个示例性例子可以为:

{

"type":"memorywarning",

"timestamp":"1500449916"

}

在内存警告类型的事件数据中,“type”用于表示该事件的类型为内存警告“memorywarning”,“timestamp”用于表示该内存警告事件发生的系统时间。

参考图2,示出了本申请一种事件复原方法实施例的流程图,本实施例可以应用于服务器侧的终端上,本实施例可以包括以下步骤:

步骤201:响应于app内事件复现的触发操作,从服务器下载app内触发的事件的事件数据集合,所述事件数据集合包括:至少一个事件数据。

在本实施例中,在服务器端的测试人员所使用的终端上也安装有app,在测试人员通过扫码或者其他方式启动该app后,可以在任意时刻触发事件复现,则在用户触发了事件复现的操作后,与服务器链接的终端可以从服务器上下载客户端上传的、该app的事件数据集合。其中,事件数据集合可以是上一次用户使用该app时出现异常退出并且本次再次启动app时客户端上传的事件数据集合,该事件数据集合可以包括至少一个事件数据,一般情况下,因为用户可能会使用一段时间的app再出现闪退的可能性较大,则事件数据集合中一般包括多个事件数据。其中,事件数据的记录过程可以参考步骤101的介绍,在此不再赘述。

步骤202:从所述事件数据集合中依次读取各事件数据。

在本步骤中,从服务器下载app的事件数据集合之后,事件可以包括用户事件和系统事件,依次读取各个用户事件和系统事件的事件数据。

步骤203:依据所述事件数据对应的事件类型在所述app内执行各事件。

在本实施例中,读取到的事件数据可以包括事件类型,例如,是用户事件中的点击事件、长按事件、滑动事件还是输入事件等,或者,是系统事件中的进入后台事件、进入前台事件或内存警告时间等等。依据各个事件数据对应的事件类型,再依据各个事件数据中的时间信息等,就可以按照先后顺序依次执行各个事件,从而在服务器侧的终端上对用户使用app时出现闪退之前的操作进行复现。

具体的,依据读取到的事件数据的内容可以确定用户事件的类型,以及系统事件的类型,然后再依据各事件的类型在app内执行各用户事件和/或系统事件即可。具体的,在事件的类型为点击时,依据事件数据中的点击控件和点击时间执行点击事件,即在该点击控件的位置上在该点击时间来执行点击操作;在事件的类型为长按时,依据事件数据中的长按控件和长按时间执行长按事件,即在该长按控件的位置上并在该长按时间来执行长按操作;在事件的类型为滑动时,依据事件数据中的滑动起始位置、滑动结束位置和滑动时间执行滑动事件;在事件的类型为输入时,依据事件数据中的输入控件、输入内容和输入时间执行输入事件。

对于系统事件来说,在事件的类型为进入后台时,依据所述事件数据中的进入后台时间执行进入后台事件;在事件的类型为进入前台时,依据所述事件数据中的进入前台时间执行进入前台事件;和/或,在事件的类型为内存警告时,依据所述事件数据中的警告时间执行内存警告事件。

在本实施例中,可以在用户启动app之后,记录用户在app内所有的事件的事件数据,可以包括用户事件的事件数据,以及系统事件的事件数据等,如果检测到该app出现了闪退等异常退出,则在下一次app启动的时候,将记录的全部用户事件和系统事件的事件数据上传至服务器,以便在服务器根据全部用户事件和系统事件的事件数据来复原app内的所有用户操作和系统操作,例如模拟用户操作、系统通知等,从而不仅可以原原本本的还原app内的操作,还能更方便开发人员发现是哪一个用户事件或系统事件造成了闪退,从而更高效的对闪退原因进行确定和解决。

对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

与上述本申请一种事件数据的记录方法实施例所提供的方法相对应,参见图3,本申请还提供了一种事件数据的记录装置实施例,在本实施例中,该装置可以集成于服务器端,该装置可以包括:处理器301和存储器302,其中,所述存储器,可以用于存储程序指令和/或数据;

所述处理器,可以用于读取所述存储器中存储的指令和/或数据,执行以下操作:

响应于app的启动操作,记录所述app内触发的事件的事件数据;

判断所述app是否出现异常退出,如果是,则在所述app下一次启动后将所述事件数据上传至服务器;

如果否,则执行所述记录所述app内触发的事件的事件数据。

其中,所述事件包括用户事件和系统事件;所述处理器用于记录所述app内触发的事件的事件数据,可以包括:

判断所述app内是否触发用户事件和系统事件,如果是,则确定所述用户事件和系统事件的类型;

依据所述用户事件和系统事件的类型,生成所述用户事件和系统事件的事件数据。

其中所述用户事件的类型包括:点击、长按、滑动和输入;以及,所述系统事件的类型包括:进入后台、进入前台和内存警告。

其中,所述处理器用于依据所述用户事件和系统事件的类型,生成所述用户事件和系统事件的事件数据,可以包括:

获取所述点击事件的点击控件和点击时间作为所述点击事件的事件数据;

获取所述长按事件的长按控件和长按时间作为所述长按事件的事件数据;

获取所述滑动事件的滑动起始位置、滑动结束位置和滑动时间作为所述长按事件的事件数据;

获取所述输入事件的输入控件、输入内容和滑动时间作为所述输入事件的事件数据;

获取所述进入后台事件的进入后台时间作为所述进入后台事件的事件数据;

获取所述进入前台事件的进入前台时间作为所述进入前台事件的事件数据;

和/或,

获取所述内存警告事件的警告时间作为所述内存警告事件的事件数据。

其中,所述用户事件为滑动事件且存在多个滑动事件时,所述处理器还可以用于:

依据各滑动事件的滑动起始位置和滑动结束位置,判断多个滑动事件是否可以进行合并,如果是,则将可以合并的各滑动事件进行合并。

其中,所述处理器还可以用于:

所述各用户事件和系统事件的事件数据,对各用户事件和系统事件进行顺序校验。

其中,如果所述app没有异常退出,则所述处理器还可以用于:

判断所述app是否正常退出,如果是,则在下一次所述app启动时清除记录的事件数据;如果否,则执行所述记录所述app内触发的事件的事件数据。

本申请还提供了一种事件复现装置,可以包括:存储器和处理器,其中,所述存储器,可以用于存储程序指令和/或数据;所述处理器,可以用于读取所述存储器中存储的指令和/或数据,执行以下操作:

响应于app内事件复现的触发操作,从服务器下载app内触发的事件的事件数据集合,所述事件数据集合包括:至少一个事件数据;

从所述事件数据集合中依次读取各事件数据,并依据所述事件数据对应的事件类型在所述app内执行各事件。

其中,所述事件包括用户事件和系统事件,所述处理器依据所述事件数据对应的事件类型在所述app内执行各事件,可以包括:

依据所述事件数据的内容确定用户事件的类型,以及系统事件的类型;

依据各事件的类型在所述app内执行各用户事件和/或系统事件。

其中,所述处理器用于依据各事件的类型在所述app内执行各用户事件和/或系统事件,可以包括:

在事件的类型为点击时,依据所述事件数据中的点击控件和点击时间执行点击事件;

在事件的类型为长按时,依据所述事件数据中的长按控件和长按时间执行长按事件;

在事件的类型为滑动时,依据所述事件数据中的滑动起始位置、滑动结束位置和滑动时间执行滑动事件;

在事件的类型为输入时,依据所述事件数据中的输入控件、输入内容和滑动时间执行输入事件;

在事件的类型为进入后台时,依据所述事件数据中的进入后台时间执行进入后台事件;

在事件的类型为进入前台时,依据所述事件数据中的进入前台时间执行进入前台事件;和/或,

在事件的类型为内存警告时,依据所述事件数据中的警告时间执行内存警告事件。

本申请实施例还公开了一种计算机可读介质,该计算机可读介质存储有使计算机执行用于事件数据的记录流程,该处理包括以下步骤:

记录步骤,其响应于app的启动操作,记录所述app内触发的事件的事件数据;

判断步骤,其判断所述app是否出现异常退出;

上传步骤,其在判断步骤的结果为是的情况下,在所述app下一次启动后将所述事件数据上传至服务器;

执行步骤,其在判断步骤的结果为否的情况下,执行所述记录所述app内触发的事件的事件数据。

本申请实施例还公开了一种计算机可读介质,该计算机可读介质存储有使计算机执行用于事件复现流程,该处理包括以下步骤:

下载步骤,其响应于app内事件复现的触发操作,从服务器下载app内触发的事件的事件数据集合,所述事件数据集合包括:至少一个事件数据;

读取步骤,其从所述事件数据集合中依次读取各事件数据;

执行步骤,其依据所述事件数据对应的事件类型在所述app内执行各事件。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本申请所提供的事件数据的记录方法及装置、事件复原方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1