【问题标题】:Android TrafficStats - how to color specify a ThreadAndroid TrafficStats - 如何为线程指定颜色
【发布时间】:2013-10-09 01:44:43
【问题描述】:

我在物理设备上运行 jelly Bean 并尝试监控网络统计信息。例如,在 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) 或不同的颜色,我只在屏幕截图底部附近看到红色。

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

【问题讨论】:

  • 您找到解决方案了吗?
  • 不,显然它超出了我的控制

标签: android performance networking monitor ddms


【解决方案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源代码是无法自己决定颜色的。

【讨论】:

    【解决方案2】:

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

     setThreadStatsTag(int tag)
    

    设置活动标记以在计算源自当前线程的 Socket 流量时使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多