我正在尝试使用 NetworkStatsManager 类来检索我的应用程序的数据使用情况。我想在一小时内跟踪一次(每隔一小时),当我阅读 queryDetails 时,这对我来说不是一个选项,因为它只是 2-3 小时。
当我尝试使用 querySummary 时:
private HashMap<String, Long> getNetworkStats(NetworkStatsManager networkStatsManager,
int connectivityManager,
@Nullable String subscriberId,
long startTime,
long endTime) {
long foreground = 0;
long background = 0;
HashMap map = new HashMap<String, Long>();
try {
final NetworkStats networkStats =
networkStatsManager.querySummary(connectivityManager, subscriberId, startTime, endTime);
NetworkStats.Bucket bucket = new NetworkStats.Bucket();
while (networkStats.hasNextBucket()) {
networkStats.getNextBucket(bucket);
if (bucket.getState() == NetworkStats.Bucket.STATE_FOREGROUND) {
foreground += bucket.getRxBytes() + bucket.getTxBytes();
} else {
background += bucket.getRxBytes() + bucket.getTxBytes();
}
}
} catch (RemoteException e) { }
map.put("foreground", foreground);
map.put("background", background);
return map;
}
使用两个不同的 startTime 调用 getNetworkStats:
long endTime = System.currentTimeMillis();
long startTime1 = endTime - (3600 * 1000); //One hour ago.
long startTime2 = endTime - (3600 * 1000 * 2); //Two hours ago.
getNetworkStats(networkStatsManager, ConnectivityManager.TYPE_WIFI, startTime1, endTime)
getNetworkStats(networkStatsManager, ConnectivityManager.TYPE_WIFI, startTime2, endTime)
返回相同的数据。为什么?