首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NetworkStatsManager的queryDetailsForUid()方法总是返回所有应用程序的旧网络使用率

NetworkStatsManager的queryDetailsForUid()方法总是返回所有应用程序的旧网络使用率
EN

Stack Overflow用户
提问于 2016-10-06 10:14:23
回答 1查看 3.1K关注 0票数 3

我编写了一个代码来获取网络使用情况,但是queryDetailsForUid(int networkType,String subscriberId,long startTime,long endTime,int uid)这个方法总是返回旧数据。如何使用NetworkstatsManager API获得更新的数据?

代码语言:javascript
复制
    try {
            NetworkStats  networkStats = networkStatsManager.queryDetailsForUid(
                            ConnectivityManager.TYPE_WIFI,
                            "",
                    0, System.currentTimeMillis()
                    ,
                    packageUid);

            NetworkStats.Bucket bucket = new NetworkStats.Bucket();
            networkStats.getNextBucket(bucket);
            Log.d("RX  "+packageUid," "+bucket.getRxBytes());
            Log.d("TX  "+packageUid," "+bucket.getTxBytes());

    } catch(Exception e){

    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-11 19:24:46

我使用了同样的方法,它不返回旧数据。您可以使用以下方法测试水桶的日期和时间:

代码语言:javascript
复制
Log.d(TAG,"StartTime: "+bucket.getStartTimeStamp());
Log.d(TAG,"EndTime: "+bucket.getEndTimeStamp());

检查结束时间戳,您将看到当前的日期和时间。AFAIK,每桶2小时。

整个法典:

代码语言:javascript
复制
            do {
            NetworkStats.Bucket bucket = new NetworkStats.Bucket();
            networkStatsByApp.getNextBucket(bucket);
            Log.d(TAG, "Bytes Recieved" + bucket.getRxBytes());
            Log.d(TAG, "Bytes Transfered" + bucket.getTxBytes());
            Log.d(TAG, "Bucket UID" + bucket.getUid());
            Log.d(TAG,"StartTime: "+bucket.getStartTimeStamp());
            Log.d(TAG,"EndTime: "+bucket.getEndTimeStamp());
            totalBuckets++;

        }while (networkStatsByApp.hasNextBucket());
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39893307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档