Как получить трафикстат из определенного потока
На Android, как я могу использовать TrafficStats и TrafficStatsCompat, чтобы получить общее количество байтов TX для определенного потока в текущем процессе? API подразумевает, что это возможно, но я не могу понять это.
1 ответ
Из документации.
Чтобы лучше определить причину пиков передачи, API Traffic Stats позволяет пометить передачу данных, происходящую в потоке, с помощью метода TrafficStats.setThreadStatsTag(), а затем вручную пометить (и не пометить) отдельные сокеты с помощью tagSocket() и untagSocket(). Например:
TrafficStats.setThreadStatsTag(0xF00D);
TrafficStats.tagSocket(outputSocket);
// Transfer data using socket
TrafficStats.untagSocket(outputSocket);
Библиотеки Apache HttpClient и URLConnection автоматически помечают сокеты на основе текущего значения getThreadStatsTag(). Эти библиотеки также помечают и размечают сокеты при повторном использовании через пулы поддержки активности.
TrafficStats.setThreadStatsTag(0xF00D);
try {
// Make network request using HttpClient.execute()
} finally {
TrafficStats.clearThreadStatsTag();
}
Маркировка сокетов поддерживается в Android 4.0, но статистика в реальном времени будет отображаться только на устройствах под управлением Android 4.0.3 или выше.