0

我在物理设备上运行果冻豆并尝试监控网络统计信息。例如,在 DDMS 中有一个称为网络统计的选项卡,当您按下开始时,您可以监控网络连接数据传输。

在此处输入图像描述

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

@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) 或不同的颜色,我只在屏幕截图底部附近看到红色。

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

4

2 回答 2

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 源代码,您无法自行决定颜色。

于 2014-04-30T08:50:15.707 回答
0

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

 setThreadStatsTag(int tag)

在对源自当前线程的 Socket 流量进行记帐时设置要使用的活动标记。

于 2013-10-10T14:08:36.033 回答