Как получить правильное количество байтов, отправленных и полученных в TrafficStats?

Мое приложение пытается подсчитать количество байтов, отправленных и полученных через WiFi / LAN и мобильные соединения для передачи данных. Для этого я получаю значенияTrafficStats счетчики в один момент времени и вычтите это из его значений при следующей проверке.

// get current values of counters
long currentMobileTxBytes = TrafficStats.getMobileTxBytes();
long currentMobileRxBytes = TrafficStats.getMobileRxBytes();
long totalTxBytes = TrafficStats.getTotalTxBytes();
long totalRxBytes = TrafficStats.getTotalRxBytes();

// to get mobile data count, subtract old from current
long currentMobileSent = currentMobileTxBytes - oldMobileTxBytes;
long currentMobileReceived = currentMobileRxBytes - oldMobileRxBytes;

// to get WiFi/LAN data count, subtract total from mobile
long currentNetworkSent = totalTxBytes - currentMobileTxBytes;
long currentNetworkReceived = totalRxBytes - currentMobileRxBytes;

Я чувствую, что приведенный выше алгоритм является разумным, однако яЯ не уверен, как проверить точность этих счетчиков. Например, когда я попытался загрузить файл размером 2,7 МБ в Dropbox через WiFi,currentMobileSent значение, которое я получил, было около 10 МБ. И даже не просматривая веб-страницы до следующей проверки, я получаю ненулевые значения, указывающие, что я получил некоторые байты данных за период ожидания.

Есть ли способ для меня, чтобы проверить, какTrafficStats приходит на эти цифры? Я'Я знаю, что помимо моего браузера, в фоновом режиме могут работать другие приложения, которые подключаются к Интернету, но от 2,7 МБ до 10 МБ просто кажется огромным скачком - я даже "получено" 90 МБ один раз, ничего не делая. Или что-то не так с тем, как ям вычисление байтов отправлено и получено?

Ответы на вопрос(1)

Ваш ответ на вопрос