android app 流量统计


https://stackoverflow.com/questions/12613402/android-statistic-3g-traffic-for-each-app-how | android statistic 3g traffic for each APP, how? - Stack Overflow


https://developer.android.google.cn/reference/android/net/TrafficStats | TrafficStats  |  Android Developers


https://developer.android.google.cn/ | Android Developers




PR: 按照应用统计流量消耗情况?

监听 拦截 网络 流量

TrafficStats.

--2.2之后引入了一个新的 android.net.TrafficStats类可以做到网络流量统计,可以统计总流量也可以统计单个进程的流量

Android系统将放流量数据信息保存在文件/proc/net/xt_qtaguid/stats 中(见源码)


使用TrafficStats.setThreadTag(int tag)方法标记的产生流量的线程,参数tag是上面模块相关的tag;@See TrafficStats;

NOTE:1、一个线程同时只会有一个有效的tag,并且不会传递,依赖包启动了新线程访问网络则需要依赖方提供标记支持;2、native层socket、webview产生的流量无法使用此方法标记;

TrafficStats.getUidRxBytes(myuid);

myuid是你的应用所有的uid,这个根据ActivityManager可以获取runing的程序获取到

大概就是先获取uid,然后根据那个方法获取接收流量

TrafficStats.getUidTxBytes(myuid);这个是发送流量。

这些是指开机开始计的,你想统计月什么的,自己写个方法保存叠加就是

static long getMobileRxBytes() //获取通过Mobile连接收到的字节总数,不包含WiFi

static long getMobileRxPackets() //获取Mobile连接收到的数据包总数,不包含WiFi

static long getMobileTxBytes() //Mobile发送的总字节数

static long getMobileTxPackets() //Mobile发送的总数据包数

static long getTotalRxBytes() //获取总的接受字节数,包含Mobile和WiFi等

static long getTotalRxPackets() //总的接受数据包数,包含Mobile和WiFi等

static long getTotalTxBytes() //总的发送字节数,包