我编写了一个代码来获取网络使用情况,但是queryDetailsForUid(int networkType,String subscriberId,long startTime,long endTime,int uid)这个方法总是返回旧数据。如何使用NetworkstatsManager API获得更新的数据?
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){
}发布于 2016-11-11 19:24:46
我使用了同样的方法,它不返回旧数据。您可以使用以下方法测试水桶的日期和时间:
Log.d(TAG,"StartTime: "+bucket.getStartTimeStamp());
Log.d(TAG,"EndTime: "+bucket.getEndTimeStamp());检查结束时间戳,您将看到当前的日期和时间。AFAIK,每桶2小时。
整个法典:
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());https://stackoverflow.com/questions/39893307
复制相似问题