流量监控工具类

来源:互联网 发布:网络诈骗200元 编辑:程序博客网 时间:2024/05/22 07:04

今天在工作中,有客户反应app消耗的流量非常大,有的还说十天用了2个G,天啦噜,听我的一愣,怎么可能!那么夸张两个G!于是就决定正对这个app好好测一下,不落下每一个死角。于是,百度查了一些流量监控的资料,根据资料,自己写的一个流量监控工具类。

import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.TrafficStats;
import android.text.format.Formatter;
import android.util.Log;

/**
* Created by Nicole on 16/5/10.
*/
public class NetrafficUtil {

private int uId;private long rx,tx;public void getAppTraffic(final Context context){    try {        final PackageManager packageManager = context.getPackageManager();        final PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(),PackageManager.GET_PERMISSIONS);        String[] premissions = packageInfo.requestedPermissions;        if(premissions!=null&&premissions.length>0){            for(String premission : premissions){                if(premission.equals("android.permission.INTERNET")){                    uId = packageInfo.applicationInfo.uid;                    new Thread(){                        @Override                        public void run() {                            super.run();                            while (true){                                rx = TrafficStats.getUidRxBytes(uId);                                tx = TrafficStats.getUidTxBytes(uId);                                if(rx<0||tx<0){                                    continue;                                }else {                                    Log.e("=======>>>",packageInfo.applicationInfo.loadLabel(packageManager)+                                            "消耗的流量为 : "+ Formatter.formatFileSize(context,rx+tx));                                    try {                                        sleep(100);                                    } catch (InterruptedException e) {                                        e.printStackTrace();                                    }                                }                            }                        }                    }.start();                }            }        }    } catch (PackageManager.NameNotFoundException e) {        e.printStackTrace();    }}

}

之后就是在MainApplication初始化调用一下就ok了。
测试结果就是,一个人瞎说一群人跟着起哄。麻辣鸡!

0 0