Android TrafficStats - 如何为线程指定颜色

时间:2013-10-09 01:44:44

标签: android performance networking monitor ddms

我在物理设备上运行jelly Bean并尝试监控网络统计信息。例如,在DDMS中有一个名为network statistics的选项卡,当您按下start时,您可以监视网络连接数据传输。

enter image description here

我特别希望监控我的一些网页视图:所以我在我的网络客户端中完成了以下操作:

@Override
public void onPageStarted(WebView view, String url, 
   android.graphics.Bitmap favicon) {


    TrafficStats.setThreadStatsTag(0xF00D);


}

public void onPageFinished(WebView view, String url) { 
TrafficStats.clearThreadStatsTag();    
}

我期待看到不同的颜色,我没有看到列出的标签(0xF00D)或不同的颜色我只看到屏幕截图底部附近的红色。

我需要的是能够按颜色区分不同的线程。

2 个答案:

答案 0 :(得分:1)

DDMS网络统计信息视图中的颜色超出了您的控制范围。您可以在代码中执行的操作只是为每个线程设置标记。 在DDMS网络统计视图源代码中,DDMS定义了一个颜色集

private static final java.awt.Color TOTAL_COLOR = java.awt.Color.GRAY;
private static final java.awt.Color[] SERIES_COLORS = new java.awt.Color[] {
    java.awt.Color.decode("0x2bc4c1"), // teal
    java.awt.Color.decode("0xD50F25"), // red
    java.awt.Color.decode("0x3369E8"), // blue
    java.awt.Color.decode("0xEEB211"), // orange
    java.awt.Color.decode("0x00bd2e"), // green
    java.awt.Color.decode("0xae26ae"), // purple
};

主动跟踪流量,由UID和标记(在您的代码中定义)唯一定义。 DDMS使用TrackedItem表示流量。然后定义一个ArrayList来表示所有流量。

private ArrayList<TrackedItem> mTrackedItems = new ArrayList<TrackedItem>();

当DDMS检测到新的流量流(这意味着新的uid或标签)时,它会以这种方式设置项目颜色:

final int size = mTrackedItems.size();
item.color = nextSeriesColor(size);

private static java.awt.Color nextSeriesColor(int index) {
return SERIES_COLORS[index % SERIES_COLORS.length];

}

我省略了一些与颜色设置无关的代码。

所以,你可以设置标签。如果您不修改DDMS源代码,则无法自行决定颜色。

答案 1 :(得分:0)

更新:根据文档,setThreadStatsTag()用于监视套接字流量。我试图用它来观看线程流量。我的错误:

 setThreadStatsTag(int tag)

设置活动标记,以便在计算源自当前线程的套接字流量时使用。