Android---优化下载让网络访问更高效(四)

来源:互联网 发布:手机网络控制软件 编辑:程序博客网 时间:2024/04/28 16:57

使用DDMS网络流量工具来识别关注的区间

Android的DDMS(Dalvik Debug Monitor Server)包含了详细的网络使用情况选项卡,这使得跟踪应用程序使用网络情况成为可能。使用这个工具,可以监视应用程序传输数据的方式和时机,并在此基础上可以优化底层相关的代码。

图3显示了大约每隔15秒钟传输一次少量数据时网络使用情况,建议通过预先获取每个请求的数据或打包上传的数据来改善网络使用效率。

图3. 使用DDMS跟踪网络的使用情况

通过监视数据传输的频率和每次连接的传输的数据量,可以识别出应用程序耗电较多的区域。通常,应该寻找那些可以被延迟的短时峰值,或是那些由于被抢占而延后的传输。

要更好的识别传输峰值所产生的原因,就要使用流量统计API,它允许你使用TrafficStats.setThreadStatsTag()方法来标记线程内部发生的数据传输情况,也可以使用tagSocket()和untagSocket()方法手动的标记(和解除标记)单独的网络套接字。例如:

TrafficStats.setThreadStatsTag(0xF00D);
TrafficStats
.tagSocket(outputSocket);
// Transfer data using socket
TrafficStats.untagSocket(outputSocket);

ApacheHttpClientURLConnection类库会基于当前的getThreadStatsTag()方法的返回值来自动的标记网络套接字。这些类库也可以通过活动的保持池(keep-alive pools)标记网络套接字,并在回收时解除标记。

TrafficStats.setThreadStatsTag(0xF00D);
try
{
  // Make network request usingHttpClient.execute()
} finally {
  TrafficStats.clearThreadStatsTag();
}

网络套接字标记在Android4.0以后被支持,但是实时的统计结果只会被显示在运行Android4.0.3以后的设备上。

原创粉丝点击