一种数据流量统计方法及终端的制作方法

文档序号:7894404阅读:204来源:国知局
专利名称:一种数据流量统计方法及终端的制作方法
技术领域
本发明属于移动通信领域,尤其涉及一种数据流量统计方法及终端。
背景技术
如今大部分的智能终端都具有上网功能,尤其是随着智能手机的普及,将人们带入了网络时代。通常智能终端都安装有大量的应用软件,但其中可能存在一些在后台偷偷消耗流量的吸费软件,这样用户即使在不使用网络连接亦会耗费不少流量,用户却难以查找是哪些应用软件在后台偷偷消耗流量从而对应删除该应用,因此让人头痛不已。虽然在智能终端上出现了一些流量统计软件,这些软件能够统计出应用程序所属UID(UserID,用户号)所产生的流量,可以通过缩小范围大致判断哪些应用产生了多少流量。由于每个应用程序都有一个WD,默认情况下,互不相关的应用程序的WD通常不同,但 如果应用程序间需要互相调用,那么这些相互调用的应用程序的WD必须相同,所以UID号和单应用之间是一对多的关系,即多个单应用可能具有同一个WD,那么在这种情况下,现有技术只能知道属于同一 WD的单应用所产生的数据流量,无法进一步确认是该UID下具体的哪些单应用产生了多少数据流量。

发明内容
鉴于上述问题,本发明的目的是提供一种数据流量统计方法,旨在解决现有技术中,无法按照不同的单应用区分数据流量的产生和使用的技术问题。本发明是这样实现的,一种数据流量的统计方法,所述方法包括下述步骤当产生网络连接时,获取当前进行网络连接的单应用并开始计算数据流量值;当所述单应用停止使用网络连接时,获取本次网络连接产生的数据流量值;将所述本次网络连接产生的数据流量值计入所述单应用的数据流量总值。本发明的另一目的在于提供一种终端,所述终端包括网络连接单应用获取单元,用于当产生网络连接时,获取当前进行网络连接的单应用并开始计算数据流量值。网络连接数据流量获取单元,用于当所述单应用停止使用网络连接时,获取本次网络连接产生的数据流量值。数据流量计入单元,用于将所述本次网络连接产生的数据流量值计入所述单应用的数据流量总值。在本发明实施例中,通过获取产生网络连接的各个单应用,再对各个单应用产生的网络流量进行统计,得到各个单应用产生的数据流量总值,解决了现有技术中只能统计每个WD所产生的数据流量,无法统计单个应用产生的数据流量的技术问题。在本发明实施例中,用户可以根据各个单应用所产生的数据流量总值,可以进一步确定哪些单应用是后台吸费软件并做后续处理。


图I是本发明第一实施例提供的一种数据流量统计方法的流程图;图2是本发明第二实施例提供的一种数据流量统计方法的流程图;图3是本发明第三实施例提供的一种终端的结构方框图;图4是本发明第四实施例提供的另一种终端的结构方框图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:图I示出了本发明实施例提供的一种数据流量统计方法的流程,为了便于说明仅不出了与本发明实施例相关的部分。在步骤SlOl中,当产生网络连接时,获取当前进行网络连接的单应用并开始计算数据流量值。其中,每个单应用都有唯——个应用包名,本步骤中需要监控网络连接,当产生网络连接时,根据网络端口的连接请求获取当前进行网络连接的单应用的包名,并根据所述包名确定当前进行网络连接的单应用。在获取当前进行网络连接的单应用之后,开始计算数据流量值。在步骤S102中,当所述单应用停止使用网络连接时,获取本次网络连接产生的数据流量值。在本步骤中,获取到当前进行网络连接的单应用后,开始计算该单应用实际产生的数据流量值,直至该单应用停止使用网络连接,那么就可以获取到本次网络连接所产生的数据流量值。在步骤S103中,将所述本次网络连接产生的数据流量值计入所述单应用的数据
流量总值。每个单应用都在数据库中对应一个数据流量总值,所述数据流量总值表明了该单应用总共产生了多少数据流量。在本步骤中,每次网络连接都可以获取到发起该次网络连接的单应用在本次网络连接中所产生的数据流量值,再将所述数据流量值计入到所述单应用的数据流量总值,这样根据所述数据库中的数据流量总值就可以知晓每个单应用总共产生了多少数据流量。在本发明实施例I中,通过获取产生网络连接的各个单应用,再对各个单应用产生的网络流量进行统计,得到各个单应用产生的数据流量总值,解决了现有技术中只能统计每个WD所产生的数据流量,无法统计单个应用产生的数据流量的技术问题。在本发明实施例中,用户可以根据各个单应用所产生的数据流量总值,可以进一步确定哪些单应用是后台吸费软件并做后续处理。实施例二 :图2示出了本发明第二实施例提供的一种数据流量统计方法的流程,为了便于说明仅不出了与本发明实施例相关的部分。在步骤S201中,建立流量数据库,为每个有网络连接权限的单应用分别建立数据流量总值。在本步骤中,首先需要分析出安装的单应用中哪些具有网络连接权限,并建立流量数据库,为这些单应用分别建立数据流量总值。本步骤通过建立数据库实现存储数据流量总值,便于流量数据的统一管理和调用。在步骤S202中,当产生网络连接时,获取当前产生数据流量的单应用并开始计算数据流量值。在本步骤中,通常需要单独监控各个单应用,当监控到有单应用产生网络连接时,获取所述单应用即可。进一步的,为了提高监控效率,只需监控数据流量端口,当监控到有网络连接时,根据数据包中的包头标示位即可找到对应的产生该网络连接的单应用。在获 取产生数据流量的单应用后,开始计算数据流量值。具体来说,为了实现获取到产生数据流量的单应用,首先需要获取产生数据流量的当前线程所在单应用的包名(PackageName),并根据所述包名确定当前进行网络连接的单应用,根据所述获取的单应用开始计算数据流量值。所述包名的获取可以通过以下方式实现每一个单应用都有一个唯一包名,通常一个单应用的程序包中可以包括多个线程,这些线程有可能有不同的创建方法和运行上下文,如 Activity 线程,Service 线程,Content Provider 线程,Java 类线程,以及 JNI (JavaNative Interface, Java本机接口)直接调C创建的线程等。单应用在执行不同的线程时,如果线程需要使用网络连接,那么就需要记下该线程所在的单应用的包名。为了实现此目的,在具体实现时通过设置一组函数用来设置和获取当前线程所在单应用的包名,比如函数SetThreadPackageName与getThreadPackageName,该函数可以通过JNI操作底层内核,最终在内核层中通过Current获取到当前进程的Task struct结构体的地址,进而获取到该结构体中包含的所述单应用包包名。具体的,针对不同线程具体处理方式如下对于Activity线程,它的handlemessage每处理一个消息,调用SetThreadPackageName 函数记录 Activity 线程当前处理的 package。对于Content Provider线程,在执行onTransact时,如果发现当前线程还没有设置过包名,调用SetThreadPackageName函数记录Activity线程当前处理的package。对于java类线程,需要在其创建时先记录下当前线程(即将要运行的线程的父亲)的包名,当新建的线程运行时即其run O被调用时设置包名。对于service线程,其上下文就是Activity线程,所以不用处理了。对于JNI直接调C创建的线程,如果父线程的包名成员有效,就会被克隆出来,所以不用处理。需要说明的是,以上对于本发明实施例具体实现方式的说明并不构成对本发明实施例内容的限定,本领域技术人员不需经过创造性劳动可采取的其他方式也属于本发明实施例的保护的范围。在步骤S203中,当所述产生数据流量的单应用发生变化时,停止计算数据流量值并获取计算结果作为本次网络连接产生的数据流量值。
在本发明实施例中,当所述产生数据流量的单应用发生变化时,表明步骤S202中确定的所述单应用已经停止使用网络连接,当前网络连接结束,此时停止计算数据流量值,并将计算结果作为本次网络连接所产生的数据流量值。具体的,在本步骤中,系统底层内核中提供有数据流量接口,所述数据流量接口的本质为一个统计端口流量的接口函数,所述数据流量接口通过监控网络连接,可以统计出从当前网络连接开始到网络连接结束的时段内所产生的数据流量。为了具体实现获取本次网络连接的数据流量值,当所述产生数据流量的单应用发生变化时,应用层JNCCJavaNative Interface, Java本机接口)调用所述数据流量接口,便可以获取到本次网络连接产生的数据流量值,再将该数据流量值与本次网络连接获取的单应用相关联,这样每次产生网络连接时,都会获取到一个数据流量值,以及该数据流量值对应的单应用。在步骤S204中,将所述本次网络连接产生的数据流量值计入所述单应用对应的流量数据库。在本步骤中,数据流量库中存储有单应用所产生的数据流量总值,前述步骤中获取到了产生数据流量的单应用,以及本次网络连接所产生的数据流量值,由于单应用和数据流量总值是一一对应关系,这里再将所述得到的数据流量值计入所述单应用对应的数据流量总值中即可。所述将数据流量值计入所述单应用对应的数据流量总值中的实现方式有多种,比如可以为将本次网络连接产生的数据流量值与流量数据库中当前的数据流量总值进行累加,并将累加结果作为新的数据流量总值存储到所述流量数据库中。这样流量数据库中存储的都是最新的数据流量总值。在步骤S205中,当到达预定的数据更新时间时,清空所有单应用的数据流量总值。在本步骤中,作为优选的实施方式,流量数据库按照预定规则存储流量数据总值,比如,所述预定规则可以设置为数据流量总值用于统计每个单应用在预定时期内产生的流量总和,当到达预定的数据更新时间时,比如每个月的最后一天24时,系统便会自动清空所有单应用的数据流量总值。这样可以准确统计出各个单应用在预定时期内所产生的数据流量总值,并可以进一步统计出预定周期内的所有单应用产生的流量总和。根据本发明实施例2,由于本发明技术方案通过建立流量数据库,并对每个单应用建立数据流量总值,并在产生网络连接时,获取当前进行网络连接的单应用并开始计算所述单应用产生的数据流量值,在当前使用网络连接的单应用发生改变时,获取本次网络连接产生的数据流量值,并将所述数据流量值更新到对应的数据流量总值中,这样用户可以根据所述数据流量总值确定每个单应用实际使用的数据流量,有效定位后台吸流量的应用。同时,根据本发明实施例2提供的可选方案,还可以实现周期对所述流量数据库清空,实现流量的周期监控。实施例三:图3示出了本发明第三实施例提供的一种终端的结构方框图,为了便于说明仅示出了与本发明实施例相关的部分。 图示中,所述装置包括网络连接单应用获取单元301,用于当产生网络连接时,获取当前进行网络连接的单应用并开始计算数据流量值。
其中,每个单应用都有唯——个应用包名,所述网络连接单应用获取单元需要监控网络连接,当产生网络连接时,根据网络端口的连接请求获取当前进行网络连接的单应用的包名,并根据所述包名确定当前进行网络连接的单应用。在获取当前进行网络连接的单应用之后,开始计算数据流量值。网络连接数据流量获取单元302,用于当所述单应用停止使用网络连接时,获取本次网络连接产生的数据流量值。在获取到当前进行网络连接的单应用后,开始计算该单应用实际产生的数据流量值,直至该单应用停止使用网络连接,那么就可以获取到本次网络连接所产生的数据流量值。数据流量计入单元303,用于将所述本次网络连接产生的数据流量值计入所述单应用的数据流量总值。
每个单应用都在数据库中对应一个数据流量总值,所述数据流量总值表明了该单应用总共产生了多少数据流量。在本步骤中,每次网络连接都可以获取到发起该次网络连接的单应用在本次网络连接中所产生的数据流量值,再将所述数据流量值计入到所述单应用的数据流量总值,这样根据所述数据库中的数据流量总值就可以知晓每个单应用总共产生了多少数据流量。实施例四图4示出了本发明第四实施例提供的一种终端的结构方框图,为了便于说明仅示出了与本发明实施例相关的部分。本实施例所述的终端在实施例三的基础上还包括流量数据库创建单元401,用于建立流量数据库,为每个有网络连接权限的单应用分别建立数据流量总值。在本发明实施例中,首先需要分析出安装的单应用中哪些具有网络连接权限,并建立流量数据库,为这些单应用分别建立数据流量总值。本步骤通过建立数据库实现存储数据流量总值,便于流量数据的统一管理和调用。网络连接单应用获取单元402,用于当产生网络连接时,获取当前进行网络连接的单应用并开始计算数据流量值。其中,每个单应用都有唯——个应用包名,所述网络连接单应用获取单元需要监控网络连接,当产生网络连接时,根据网络端口的连接请求获取当前进行网络连接的单应用的包名,并根据所述包名确定当前进行网络连接的单应用,根据所述获取的单应用开始计算数据流量值。所述网络连接单应用获取单元402包括单应用获取子单元4021,用于当产生网络连接时,获取当前产生数据流量的单应用。数据流量值计算单元4022,用于当产生网络连接时,开始计算数据流量值。在本发明实施例中,单应用获取子单元通常需要单独监控各个单应用,当监控到有单应用产生网络连接时,获取所述单应用即可。进一步的,为了提高监控效率,单应用获取子单元只需监控数据流量端口,当监控到有网络连接时,根据数据包中的包头标示位即可找到对应的产生该网络连接的单应用。为了实现获取到产生数据流量的单应用,首先需要获取产生数据流量的当前线程所在单应用的包名,并根据所述包名确定当前进行网络连接的单应用,获取到单应用后,数据流量值计算单元开始计算数据流量值。在本发明实施例中,为了实现获取到单应用的包名,具体实现时,可以通过以下方案实现每一个单应用都有一个唯一包名,通常一个单应用的程序包中可以包括多个线程,这些线程有可能有不同的创建方法和运行上下文,如Activity线程,Service线程,Content Provider 线程,Java 类线程,以及 JNI (Java Native Interface, Java 本机接口)直接调C创建的线程等。单应用在执行不同的线程时,如果线程需要使用网络连接,那么就需要记下该线程所在的单应用的包名。为了实现此目的,在具体实现时通过设置一组函数用来设置和获取当前线程所在单应用的包名,比如函数SetThreadPackageName与getThreadPackageName,该函数可以通过JNI操作底层内核,最终在内核层中通过Current获取到当前进程的Task_struct结构体的地址,进而获取到该结构体中包含的所述单应用包包名。对于不同线程的具体函数实现方法请参考方法实施例相关内容描述。网络连接数据流量获取单元403,用于当所述单应用停止使用网络连接时,获取本次网络连接产生的数据流量值,包括
计算结果获取单元4031,用于当所述产生数据流量的单应用发生变化时,停止计算数据流量值并获取获取计算结果作为本次网络连接产生的数据流量值。在本发明实施例中,当所述产生数据流量的单应用发生变化时,表明所述单应用已经停止使用网络连接,当前网络连接结束,此时停止计算数据流量值,并将计算结果作为本次网络连接所产生的数据流量值。本实施例中,系统底层内核中提供有数据流量接口,所述数据流量接口的本质为一个统计端口流量的接口函数,所述数据流量接口通过监控网络连接,可以统计出从当前网络连接开始到网络连接结束的时段内所产生的数据流量。为了具体实现获取本次网络连接的数据流量值,当所述产生数据流量的单应用发生变化时,应用层JNC调用所述数据流量接口,便可以获取到本次网络连接产生的数据流量值,再将该数据流量值与本次网络连接获取的单应用相关联,这样每次产生网络连接时,都会获取到一个数据流量值,以及该数据流量值对应的单应用。数据流量计入单元404,用于将所述本次网络连接产生的数据流量值计入所述单应用的数据流量总值,包括流量数据库写入单元4041,用于将所述本次网络连接产生的数据流量值计入所述单应用对应的数据流量总值。在本发明实施例中,数据流量库中存储有单应用所产生的数据流量总值,前述部分中获取到了产生数据流量的单应用,以及本次网络连接所产生的数据流量值,由于单应用和流量数据库是一一对应关系,这里再将所述得到的数据流量值计入所述单应用对应的数据流量总值中即可。所述将数据流量值计入所述单应用对应的数据流量总值中的实现方式有多种,比如可以为将本次网络连接产生的数据流量值与流量数据库中当前的数据流量总值进行累加,并将累加结果作为新的数据流量总值存储到所述流量数据库中。这样流量数据库中存储的都是最新的数据流量总值。进一步,作为优选的实施方式,所述终端还包括清空单元405,用于当到达预定的数据更新时间时,清空所有单应用的数据流量总值。在本发明实施例中,流量数据库按照预定规则存储流量数据总值,比如,所述预定规则可以设置为数据流量总值用于统计每个单应用在预定时期内的产生的流量总和,当到达预定的数据更新时间时,比如每个月的最后一天24时,系统便会自动清空所有单应用的数据流量总值。这样可以准确统计出各个单应用在预定时期内所产生的数据流量总值,并可以进一步统计出预定周期内的所有单应用产生的流量总和。本发明实施例提供的终端通过具体统计出每个单应用所产生的数据流量总值,SP使多个单应用属于同一 HD的情况下,用户也能够清楚知晓每个单应用的具体流量消耗情况。比如假设用户在智能终端(如手机)上安装了 2个单应用(分别是A和B),这两个单应用都绑定在systemuid(lOOO)下,即两者的UID均为1000,并且都有上网权限。若用户使用单应用A连接网络并在后台下载数据,再使用单应用B连接网络查看朋友最新动态以及寻找有趣的事情等等。那么,通过本发明实施例,可分别对单应用A和单应用B分别进行上网流量的统计,同时可按照要求显示出来,方便用户直观查看当前各应用的上网情况,t匕如,用户通过查询获知,单应用A本月当前已使用的上网流量为10M,单应用B本月当前使用量30M,但是却查询到systemuid(lOOO)下还有单应用C当前已使用的上网流量为100M,并且平时基本上没有怎么使用过单应用C。那么,很显然,单应用C就是后台吸费软件。该用户可以针对该应用采取相应措施,如果采用现有技术智能知晓UID为1000的单应用共产生了 140M流量,但无法知晓具体单应用的流量消耗情况,也就无法知晓那个是吸费软件了。 因此通过本发明技术方案可以使每个单应用的流量使用情况变得透明。本领域普通技术人员可以理解,实现上述实施例的方法的过程可以通过程序指令相关的硬件来完成,所述的程序可以存储于可读取存储介质中,该程序在执行时执行上述方法中的对应步骤。所述的存储介质可以如R0M/RAM、磁碟、光盘等。
权利要求
1.一种数据流量统计方法,其特征在于,所述方法包括下述步骤 当产生网络连接时,获取当前进行网络连接的单应用并开始计算数据流量值; 当所述单应用停止使用网络连接时,获取本次网络连接产生的数据流量值; 将所述本次网络连接产生的数据流量值计入所述单应用的数据流量总值。
2.如权利要求I所述的数据流量统计方法,其特征在于,所述方法在获取当前产生网络连接的单应用之前还包括 为每个有网络连接权限的单应用分别建立流量数据库;
3.如权利要求2所述的数据流量统计方法,其特征在于,所述将本次网络连接产生的数据流量值计入所述单应用的数据流量总值包括 将所述本次网络连接产生的数据流量值计入所述单应用对应的流量数据库。
4.如权利要求1-3中任意一项所述的数据流量统计方法,其特征在于,所述当产生网络连接时,获取当前进行网络连接的单应用并开始计算数据流量值包括 当产生网络连接时,获取当前产生数据流量的单应用并开始计算数据流量值; 所述当所述单应用停止使用网络连接时,获取本次网络连接产生的数据流量值包括 当所述产生数据流量的单应用发生变化时,停止计算数据流量值并获取计算结果作为本次网络连接产生的数据流量值。
5.如权利要求1-4中任意一项所述的数据流量统计方法,其特征在于,所述数据流量统计方法还包括 当到达预定的数据更新时间时,清空所有单应用的数据流量总值。
6.—种终端,其特征在于,所述终端包括 网络连接单应用获取单元,用于当产生网络连接时,获取当前进行网络连接的单应用并开始计算数据流量值; 网络连接数据流量获取单元,用于当所述单应用停止使用网络连接时,获取本次网络连接产生的数据流量值; 数据流量计入单元,用于将所述本次网络连接产生的数据流量值计入所述单应用的数据流量总值。
7.如权利要求6所述的终端,其特征在于,所述终端还包括 流量数据库创建单元,用于为每个有网络连接权限的单应用分别建立流量数据库。
8.如权利要求7所述的终端,其特征在于,所述数据流量计入单元包括 流量数据库写入单元,用于将所述本次网络连接产生的数据流量值计入所述单应用对应的流量数据库。
9.如权利要求6-8中任意一项所述的终端,其特征在于,所述网络连接单应用获取单元包括 单应用获取子单元,用于当产生网络连接时,获取当前产生数据流量的单应用。
数据流量值计算单元,用于当所述单应用获取子单元已获取当前产生数据流量的单应用时,开始计算数据流量值。
所述网络连接数据流量获取单元包括 计算结果获取单元,用于当所述产生数据流量的单应用发生变化时,停止计算数据流量值并获取获取计算结果作为本次网络连接产生的数据流量值。
10.如权利要求6-9中任意一项所述的终端,其特征在于,所述终端还包括清空单元,用于当到达预定的数据更新时间时,清空所有单应用的数据流量总值。
全文摘要
本发明适用于移动通信领域,提供一种数据流量统计方法及终端,所述方法包括下述步骤当产生网络连接时,获取当前进行网络连接的单应用并开始计算数据流量值;当所述单应用停止使用网络连接时,获取本次网络连接产生的数据流量值;将所述本次网络连接产生的数据流量值计入所述单应用的数据流量总值。本发明通过获取到产生网络连接的各个单应用,在产生网络连接的单应用发生变化时,对当前单应用产生的数据流量值进行统计,这样即使存在多个单应用属于同一UID的情况下,最终也可以统计出各个单应用所产生的数据流量总值。
文档编号H04W24/00GK102711139SQ201210123218
公开日2012年10月3日 申请日期2012年4月24日 优先权日2012年4月24日
发明者赵吉昌 申请人:华为终端有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1