我使用NetworkStatsManager类检索应用程序的数据使用情况。
如果我提供01.01.2018作为启动时间,它显示我的手机已经发送了5,4GB。
如果我提供了01.01.2017,它仍然显示5,4GB。
这让我假设在某种程度上,开始的时间是有限度的。不幸的是,这些文件没有提到这方面的任何内容。
那么,我们能有多少时间回去?
代码:
这是使用querySummary检索数据的代码:
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月01日00:00:00 GMT+01:00。
如果我现在把它定在2017年,结果和2018年一样。
我做错了什么吗?
编辑:
我刚做了一些测试,限制似乎是3个月。
任何超过3个月的开始时间都会导致相同的值。
有谁能确认,从现在的时间起,已经运行了3个多月了,
或者是否有任何官方文件来解决这一问题?
发布于 2020-06-18 06:03:14
它显示了自上一次工厂重置设备以来的数据使用情况。可能是您提供的日期比您的设备的工厂重置更早。
希望我能帮上忙。
https://stackoverflow.com/questions/52246504
复制相似问题