NetworkStatsManager - какое самое раннее время запуска?

Я использую класс NetworkStatsManager для получения данных об использовании приложений.

Если я укажу 01.01.2018 в качестве времени запуска, это показывает, что мой телефон разослал 5,4 ГБ.
Если я предоставлю 01.01.2017, это все еще показывает 5,4 ГБ.

Это позволяет мне предположить, что есть какое-то ограничение относительно времени начала. К сожалению, в документации ничего не говорится об этом.

Итак, сколько времени мы можем вернуться?

Код:
Это код, который извлекает данные, используя 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;
    }

Возвращает пн 01 января 00:00:00 по Гринвичу + 01: 00 2018.
Если я установлю его на 2017 год, результат будет таким же, как и для 2018 года.

Я делаю что-то неправильно?

РЕДАКТИРОВАТЬ:
Я только что провел какое-то тестирование, похоже, лимит составляет 3 месяца.
Если время старта превышает 3 месяца, это приводит к тому же значению.
Кто-нибудь может подтвердить, что ему удалось заставить его работать более 3 месяцев с текущего времени?
Или есть официальная документация, касающаяся этого?

0 ответов

Он показывает использование данных с момента последнего сброса настроек вашего устройства до заводских. Возможно, указанная вами дата старше заводских настроек вашего устройства.

надеюсь, я был полезным.

Другие вопросы по тегам