我编写了一个代码来获取网络使用但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){
}
答案 0 :(得分:3)
我使用了相同的方法,它不返回旧数据。 您可以使用以下方式测试存储桶的日期和时间:
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());