NetworkStatsManager语言 - 最早的开始时间是多少?



我正在使用NetworkStatsManager类来检索应用程序的数据使用情况。

如果我提供01.01.2018作为开始时间,则显示我的手机已发出5,4 GB。
如果我提供 01.01.2017,它仍然显示 5,4 GB。

这让我假设开始时间在某种程度上存在限制。不幸的是,文档没有提到与此相关的任何内容。

那么,我们能回去多少时间呢?

代码:这是使用查询摘要检索数据的代码:

private long[] getBytesSummary(Context context, int networkType, Calendar calendar) {
NetworkStatsManager networkStatsManager = (NetworkStatsManager) context.getSystemService(Context.NETWORK_STATS_SERVICE);
NetworkStats networkStats = null;
try {
networkStats = networkStatsManager.querySummary(
networkType,
Util.getSubscriberId(context, networkType),
calendar.getTimeInMillis(),
System.currentTimeMillis());
} catch (RemoteException e) {
if (debug) Log.e(TAG, "getBytesSummary: " + e.toString());
}
long[] result = new long[2];
long totalRxBytes = 0;
long totalTxBytes = 0;
NetworkStats.Bucket bucket = new NetworkStats.Bucket();
if (networkStats != null) {
while (networkStats.hasNextBucket()) {
networkStats.getNextBucket(bucket);
int uid = bucket.getUid();
long uidRxBytes = bucket.getRxBytes();
long uidTxBytes = bucket.getTxBytes();
if (uidsWithNetworkUsageMap.indexOfKey(uid) < 0) {
long[] uidBytes = new long[2];
uidBytes[0] = uidRxBytes;
uidBytes[1] = uidTxBytes;
uidsWithNetworkUsageMap.put(uid, uidBytes);
} else {
long[] value = uidsWithNetworkUsageMap.get(uid);
value[0] = value[0] + uidRxBytes;
value[1] = value[1] + uidTxBytes;
uidsWithNetworkUsageMap.put(uid, value);
}
totalRxBytes += bucket.getRxBytes();
totalTxBytes += bucket.getTxBytes();
}
networkStats.close();
}
result[0] = totalRxBytes;
result[1] = totalTxBytes;
return result;
}

正如你在上面看到的,我给该方法一个日历对象。
这是我获取当前年份日历的方式:

public static Calendar getCalendarCurrentYear() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_YEAR, 1);
// for 0-12 clocks
calendar.set(Calendar.HOUR, 0);
calendar.set(Calendar.AM_PM, Calendar.AM);
// for 0-24 clocks
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
//        calendar.set(Calendar.YEAR, 2017);
Log.i("DataUsage", "getCalendarCurrentYear: " + calendar.getTime());
return calendar;
}

这将返回 2018 年 1 月 1 日星期一 00:00:00 GMT+01:00。
如果我现在将其设置为 2017 年,则结果与 2018 年相同。

我做错了什么吗?

编辑:
我刚刚做了一些测试,限制似乎是3个月。
任何大于 3 个月的开始时间都会产生相同的值。
谁能确认它设法让它从当前时间工作超过 3 个月
或者是否有任何官方文件解决这个问题?

它显示自上次将设备恢复出厂设置以来的数据使用情况。 您提供的日期可能早于设备的恢复出厂设置。

希望我有帮助。

相关内容

  • 没有找到相关文章

最新更新