Как получить правильное количество байтов, отправленных и полученных в 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)

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