一种应用程序运行时间的统计方法和装置与流程

文档序号:11949935阅读:516来源:国知局
一种应用程序运行时间的统计方法和装置与流程

本申请涉及信息技术领域,特别是涉及一种应用程序运行时间的统计方法和一种应用程序运行时间的统计装置。



背景技术:

随着安卓Android智能手机等移动终端的功能越来越丰富,用户可以根据需要在移动终端上安装各种不同的应用程序。但是哪些应用程序是用户使用频率较高的,哪些是用户很少使用的,一般都需要通过统计终端中各应用程序的运行时间的长短来分析用户的使用习惯,进而改善用户体验。

目前,针对安卓Android类移动终端中应用程序运行时间的统计,通常是应用程序在终端前台和后台之间每切换一次,系统就记录并向服务器上报一次数据。上述方法能够保证运行时间统计和上报的及时性,但多次的上报也会增加数据传输流量,加大服务器端处理数据的压力,此外,由于服务器端要处理的数据很多,数据源多样化,也使得服务器端在对零散的数据进行合并时容易出现错误,使得对应用程序运行时间的统计准确率不高。



技术实现要素:

鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种应用程序运行时间的统计方法和相应的一种应用程序运行时间的统计装置。

为了解决上述问题,本申请实施例公开了一种应用程序运行时间的统计方法,包括:

终端获取应用程序的运行状态信息,所述运行状态信息包括应用程序的包标识;

从具有相同包标识的运行状态信息中提取出运行开始时间和运行结束时间;

封装所述运行开始时间和运行结束时间,获得运行时间数据包;

将所述运行时间数据包发送至服务器。

可选地,所述从具有相同包标识的运行状态信息中提取出运行开始时间和运行结束时间的步骤包括:

遍历所述运行状态信息,所述运行状态信息包括应用程序的操作类型信息,所述操作类型信息为前台运行或后台运行;

从所述前台运行的运行状态信息中,提取出运行时间的最小值,以及,从所述后台运行的运行状态信息中,提取出运行时间的最大值;

将所述运行时间的最小值作为运行开始时间,将所述运行时间的最大值作为运行结束时间。

可选地,所述从所述前台运行的运行状态信息中,提取出运行时间的最小值的步骤包括:

分别获取前台运行的运行状态信息中的运行时间;

逐一比较所述运行时间的大小,获得所述运行时间的最小值;

所述从所述后台运行的运行状态信息中,提取出运行时间的最大值的步骤包括:

分别获取后台运行的运行状态信息中的运行时间;

逐一比较所述运行时间的大小,获得所述运行时间的最大值。

可选地,所述封装所述运行开始时间和运行结束时间,获得运行时间数据包的步骤包括:

将所述应用程序的包标识,以及,所述运行开始时间和运行结束时间封装成运行时间数据包。

为了解决上述问题,本申请实施例还公开了一种应用程序运行时间的统计方法,包括:

接收终端发送的运行时间数据包;

解析所述运行时间数据包,获得应用程序的包标识,以及,运行开始时间和运行结束时间;

根据所述应用程序的包标识,以及,运行开始时间和运行结束时间,统计应用程序的运行时间。

为了解决上述问题,本申请实施例还公开了一种应用程序运行时间的统计装置,包括:

获取模块,用于终端获取应用程序的运行状态信息,所述运行状态信息包括应用程序的包标识;

提取模块,用于从具有相同包标识的运行状态信息中提取出运行开始时间和运行结束时间;

封装模块,用于封装所述运行开始时间和运行结束时间,获得运行时间数据包;

发送模块,用于将所述运行时间数据包发送至服务器。

可选地,所述提取模块包括:

遍历子模块,用于遍历所述运行状态信息,所述运行状态信息包括应用程序的操作类型信息,所述操作类型信息为前台运行或后台运行;

提取子模块,用于从所述前台运行的运行状态信息中,提取出运行时间的最小值,以及,从所述后台运行的运行状态信息中,提取出运行时间的最大值,将所述运行时间的最小值作为运行开始时间,将所述运行时间的最大值作为运行结束时间。

可选地,所述提取子模块包括:

第一提取单元,用于分别获取前台运行的运行状态信息中的运行时间;

第一比较单元,用于逐一比较所述运行时间的大小,获得所述运行时间的最小值;

所述提取子模块还包括:

第二提取单元,用于分别获取后台运行的运行状态信息中的运行时间;

第二比较单元,用于逐一比较所述运行时间的大小,获得所述运行时间的最大值。

可选地,所述封装模块包括:

封装子模块,用于将所述应用程序的包标识,以及,所述运行开始时间和运行结束时间封装成运行时间数据包。

为了解决上述问题,本申请实施例还公开了一种应用程序运行时间的统计装置,包括:

接收模块,用于接收移动终端发送的运行时间数据包;

解析模块,用于解析所述运行时间数据包,获得应用程序的包标识,以及,运行开始时间和运行结束时间;

统计模块,用于根据所述应用程序的包标识,以及,运行开始时间和运行结束时间,统计应用程序的运行时间。

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

本申请实施例,通过从系统文件中获取运行状态信息,然后根据所述运行状态信息中的应用程序包标识,提取出应用程序的运行开始时间和运行结束时间,进而将所述运行开始时间和运行结束时间封装成数据包,并发送至服务器,解决了已有技术中应用程序每次启动或退出时,均需要向服务器上报一次运行时间的问题,降低了数据传输流量,减轻了服务器端数据处理的压力。

附图说明

图1是本申请的一种应用程序运行时间的统计方法实施例一的步骤流程图;

图2是本申请的一种应用程序运行时间的统计方法实施例二的步骤流程图;

图3是本申请的一种应用程序运行时间的统计方法实施例三的步骤流程图;

图4是本申请的一种应用程序运行时间的统计装置实施例一的结构框图;

图5是本申请的一种应用程序运行时间的统计装置实施例二的结构框图。

具体实施方式

为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。

参照图1,示出了本申请的一种应用程序运行时间的统计方法实施例一的步骤流程图,具体可以包括如下步骤:

步骤101,终端获取应用程序的运行状态信息,所述运行状态信息包括应用程序的包标识;

在本申请实施例中,所述应用程序是指安装于移动终端中的计算机程序,所述移动终端可以是智能手机、平板电脑等终端,本申请对移动终端的具体类型不作限定。

通常,在安卓Android系统的移动终端中,可以从系统文件UsageStats中获得应用程序的运行状态信息,UsageStats是安卓Android操作系统的一个监测程序,可以统计各应用程序在运行中的各项数据。UsageStats中的文件在记录应用程序的运行数据时,是以Activity为单位,格式如下:

<time=”time1”package=”name1”class=”Activity1”type=”foreground”>

<time=”time2”package=”name1”class=”Activity1”type=”background”>

<time=”time3”package=”name1”class=”Activity2”type=”foreground”>

<time=”time4”package=”name1”class=”Activity2”type=”background”>

<time=”time5”package=”name2”class=”Activity3”type=”foreground”>

<time=”time6”package=”name2”class=”Activity3”type=”background”>

<time=”time7”package=”name2”class=”Activity4”type=”foreground”>

<time=”time8”package=”name2”class=”Activity4”type=”background”>

其中,time记录的是当前操作的时间,package是当前应用程序的包标识,应用程序的包标识可以用于唯一地表示一个应用程序;class记录的是当前的Activity界面,在安卓操作系统中,Activity是一个应用程序组件,可以提供一个屏幕,用户可以通过该屏幕来实现与终端的交互;而type则记录了当前应用程序的操作类型信息,例如,前台运行或者后台运行。

步骤102,从具有相同包标识的运行状态信息中提取出运行开始时间和运行结束时间;

由于应用程序的包标识可以用于唯一地表示一个应用程序,因此,具有相同包标识的多条运行状态信息可以认为是同一个应用程序在运行中所产生的,从而可以从具有相同包标识的多条运行状态信息中提取出该应用程序的运行开始时间和运行结束时间。例如,对于从UsageStats中获得的第一条运行状态信息

<time=”time1”package=”name1”class=”Activity1”type=”foreground”>,其操作类型为前台运行,可以认为time1是应用程序name1的运行开始时间。

在本申请的一种优选实施例中,所述从具有相同包标识的运行状态信息中提取出运行开始时间和运行结束时间的步骤具体可以包括如下子步骤:

子步骤1021,遍历所述运行状态信息,所述运行状态信息包括应用程序的操作类型信息,所述操作类型信息为前台运行或后台运行;

子步骤1022,从所述前台运行的运行状态信息中,提取出运行时间的最小值,以及,从所述后台运行的运行状态信息中,提取出运行时间的最大值;

子步骤1023,将所述运行时间的最小值作为运行开始时间,将所述运行时间的最大值作为运行结束时间。

在具体实现中,在从UsageStats中获得多条运行状态信息后,可以依次读取所述运行状态信息,将具有相同的包标识的运行状态信息提取出来,通过判断每一条运行状态信息的操作类型是前台运行还是后台运行,从而在操作类型信息为前台运行的一条或多条运行状态信息中,提取出运行时间的最小值,将所述运行时间的最小值作为运行开始时间,然后,在操作类型信息为后台运行的一条或多条运行状态信息中,提取出运行时间的最大值,将所述运行时间的最大值作为运行结束时间。例如,对于上述示例中包标识为name1的应用程序,其操作类型为前台运行的时间分别为time1和time3,其操作类型为后台运行的时间分别为time2和time4,可以通过比较time1和time3的大小,以及比较time2和time4的大小,从而将time1和time3中较小的时间确定为应用程序的运行开始时间,将time2和time4中较大的时间确定为应用程序的结束时间。

步骤103,封装所述运行开始时间和运行结束时间,获得运行时间数据包;

在本申请实施例中,当分别获得应用程序的运行开始时间和运行结束时间后,可以将所述运行开始时间和运行结束时间与所述应用程序的包标识一起,封装成数据包,格式可以为:

<包标识packageName运行开始时间startTime运行结束时间endTime>。

步骤104,将所述运行时间数据包发送至服务器。

在具体实现中,可以定时发送所述运行时间数据包,例如每一小时,或者每两小时,本领域技术人员可以根据实际需要确定发送数据包的时间间隔,本申请对此不作限定。

在本申请实施例中,通过从系统文件中获取一条或多条运行状态信息,然后根据所述运行状态信息中的应用程序包标识,提取出应用程序的运行开始时间和运行结束时间,进而将所述运行开始时间和运行结束时间封装成数据包,并发送至服务器,解决了已有技术中应用程序每次启动或退出时,均需要向服务器上报一次运行时间的问题,降低了数据传输流量,减轻了服务器端数据处理的压力。

参照图2,示出了本申请的一种应用程序运行时间的统计方法实施例二的步骤流程图,具体可以包括如下步骤:

步骤201,获取应用程序的运行状态信息,所述运行状态信息包括应用程序的包标识;

在本申请实施例中,所述应用程序是指安装于移动终端中的计算机程序,所述移动终端可以是智能手机、平板电脑等终端,本申请对移动终端的具体类型不作限定。

在具体实现中,可以从系统文件UsageStats中获得应用程序的运行状态信息,所述运行状态信息可以包括当前操作的时间、应用程序的包标识、Activity界面,以及操作类型信息等等。

步骤202,遍历所述运行状态信息,所述运行状态信息包括应用程序的操作类型信息,所述操作类型信息为前台运行或后台运行;

步骤203,从所述前台运行的运行状态信息中,提取出运行时间的最小值,将所述运行时间的最小值作为运行开始时间;

通常,应用程序的包标识可以唯一地表示一个应用程序。因此,在本申请实施例中,在从UsageStats中获得多条运行状态信息后,可以依次读取所述运行状态信息,将具有相同的包标识的运行状态信息提取出来,通过确定运行状态信息中记录的操作类型是前台运行还是后台运行,获得应用程序的运行开始时间和运行结束时间。

在本申请的一种优选实施例中,所述从所述前台运行的运行状态信息中,提取出运行时间的最小值的步骤具体可以包括如下子步骤:

子步骤2031,分别获取前台运行的运行状态信息中的运行时间;

子步骤2032,逐一比较所述运行时间的大小,获得所述运行时间的最小值。

在具体实现中,可以从操作类型为前台运行的一条或多条运行状态信息中,提取出相应的操作时间,通过逐一比较所述操作时间的大小,从而获得所述运行时间的最小值,可以将所述运行时间的最小值作为运行开始时间。

步骤204,从所述后台运行的运行状态信息中,提取出运行时间的最大值,将所述运行时间的最大值作为运行结束时间;

在本申请的一种优选实施例中,所述从所述后台运行的运行状态信息中,提取出运行时间的最大值的步骤具体可以包括如下子步骤:

子步骤2041,分别获取后台运行的运行状态信息中的运行时间;

子步骤2042,逐一比较所述运行时间的大小,获得所述运行时间的最大值。

在具体实现中,可以从操作类型为后台运行的一条或多条运行状态信息中,提取出相应的操作时间,通过逐一比较所述操作时间的大小,从而获得所述运行时间的最大值,可以将所述运行时间的最大值作为运行结束时间。

步骤205,将所述应用程序的包标识,以及,所述运行开始时间和运行结束时间封装成运行时间数据包;

在本申请实施例中,当分别获得应用程序的运行开始时间和运行结束时间后,可以将所述运行开始时间和运行结束时间与所述应用程序的包标识一起,封装成数据包,格式可以为:

<包标识packageName运行开始时间startTime运行结束时间endTime>。

步骤206,将所述运行时间数据包发送至服务器。

在具体实现中,可以定时发送所述运行时间数据包,例如每一小时,或者每两小时发送一次,本申请对此不作限定。

参照图3,示出了本申请的一种应用程序运行时间的统计方法实施例三的步骤流程图,具体可以包括如下步骤:

步骤301,接收终端发送的运行时间数据包;

步骤302,解析所述运行时间数据包,获得应用程序的包标识,以及,运行开始时间和运行结束时间;

在本申请实施例中,服务器在接收到移动终端发送的运行时间数据包后,可以按照预设格式对所述运行时间数据包进行解析,获得应用程序的包标识,以及,运行开始时间和运行结束时间。

步骤303,根据所述应用程序的包标识,以及,运行开始时间和运行结束时间,统计应用程序的运行时间。

在具体实现中,可以根据所述应用程序的包标识唯一地确定出所述运行时间数据包属于哪一个应用程序,然后根据运行开始时间和运行结束时间之间的差值,获得所述应用程序的运行时间。

在本申请实施例中,在接收到移动终端发送的运行时间数据包后,可以通过解析所述数据包获得应用程序的包标识,以及,运行开始时间和运行结束时间等信息,从而统计获得应用程序的运行时间。由于移动终端无需在应用程序每次启动或退出时都向服务器发送一次运行时间信息,采用本方法可以有效降低服务器数据处理的压力;同时,服务器不再接收到零散的数据,也降低了服务器在对数据处理时出现错误的概率,提高了服务器对应用程序运行时间的统计的准确率。

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

参照图4,示出了本申请的一种应用程序运行时间的统计装置实施例一的结构框图,具体可以包括如下模块:

获取模块401,用于终端获取应用程序的运行状态信息,所述运行状态信息可以包括应用程序的包标识;

提取模块402,用于从具有相同包标识的运行状态信息中提取出运行开始时间和运行结束时间;

封装模块403,用于封装所述运行开始时间和运行结束时间,获得运行时间数据包;

发送模块404,用于将所述运行时间数据包发送至服务器。

在本申请实施例,所述提取模块402具体可以包括如下子模块:

遍历子模块,用于遍历所述运行状态信息,所述运行状态信息可以包括应用程序的操作类型信息,所述操作类型信息可以为前台运行或后台运行;

提取子模块,用于从所述前台运行的运行状态信息中,提取出运行时间的最小值,以及,从所述后台运行的运行状态信息中,提取出运行时间的最大值,将所述运行时间的最小值作为运行开始时间,将所述运行时间的最大值作为运行结束时间。

在本申请实施例,所述提取子模块具体可以包括如下单元:

第一提取单元,用于分别获取前台运行的运行状态信息中的运行时间;

第一比较单元,用于逐一比较所述运行时间的大小,获得所述运行时间的最小值;

在本申请实施例,所述提取子模块还可以包括如下单元:

第二提取单元,用于分别获取后台运行的运行状态信息中的运行时间;

第二比较单元,用于逐一比较所述运行时间的大小,获得所述运行时间的最大值。

在本申请实施例,所述封装模块403具体可以包括如下子模块:

封装子模块,用于将所述应用程序的包标识,以及,所述运行开始时间和运行结束时间封装成运行时间数据包。

参照图5,示出了本申请的一种应用程序运行时间的统计装置实施例二的结构框图,具体可以包括如下模块:

接收模块501,用于接收终端发送的运行时间数据包;

解析模块502,用于解析所述运行时间数据包,获得应用程序的包标识,以及,运行开始时间和运行结束时间;

统计模块503,用于根据所述应用程序的包标识,以及,运行开始时间和运行结束时间,统计应用程序的运行时间。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。

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

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

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