アンドロイドで、現在のプロセスで特定のスレッドのTXバイト合計を取得するには、どうすればTrafficStatsとTrafficStatsCompatを使用できますか? APIはそれが可能であることを意味しますが、私はそれを理解できません。特定のスレッドからtrafficstatsを取得する方法
1
A
答えて
2
Traffic Stats APIを使用すると、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以降を搭載する端末にのみ表示されます。
しかし、TrafficStatsを使用して、そのタグでタグ付けされたトラフィックに対してのみ転送されるバイトを提供することは可能ですか?同じ時刻に複数のネットワーク操作がアプリで発生している可能性があります...特定のタグ(たとえば、特定のネットワーク関連のタスクではなく、何か他のものではありませんか?私が見る唯一の方法は、getTotalRxBytes()...特定のタグをフィルタリングすることはできませんか? – drmrbrewer