对以下两种Android TrafficStats方法感到困惑: getUidTxBytes(int uid)和getUidRxBytes(int uid),这两种方法返回通过网络为此UID发送和接收的字节数.但它的时间单位是多少,是每秒?如果我想计算每个应用每天传输和接收的数据,我该怎么办.我想过一种方法,在sql中存储数据并继续向表中添加数据.这是正确的方法吗?
我觉得我现在正在疯狂吃药.我的应用程序的一个特定部分已经工作了好几天,今天它只是停止工作,我无法弄清楚为什么.我的代码的这部分用于输出自启动以来每个特定应用程序已发送和接收的总数据.现在,值始终显示为0.
可能会或可能不会影响此事的一些事情:
1.)我的Nexus 4今天刚刚更新到Android 4.3,但我怀疑这是一个问题,因为我在更新后工作得很好.
2.)随着Android API 18更新,流量统计API中的一些方法现在已被弃用,但这些是我甚至不使用的方法,因此这应该没有效果. http://developer.android.com/reference/android/net/TrafficStats.html
非常感谢所有帮助.
PackageManager packageManager=this.getPackageManager();
List<ApplicationInfo> appList=packageManager.getInstalledApplications(0);
for (ApplicationInfo appInfo : appList) {
String appLabel = (String) packageManager.getApplicationLabel(appInfo);
int uid = appInfo.uid;
Log.d("data", String.valueOf(TrafficStats.getUidRxBytes(uid) + TrafficStats.getUidTxBytes(uid)));
Run Code Online (Sandbox Code Playgroud)
更新[2014年1月23日]:在运行Android 4.4.2的Nexus 4上测试getUidRxBytes()和getUidTxBytes()会显示值不再为0,但报告的是正确的统计信息.