您的位置:首页 > 理论基础 > 计算机网络

APP网络优化之一:用Network Traffic Tool 收集网络传输数据

2016-10-20 15:56 344 查看
本文分四个步骤:

1.标记网络请求类型
2.在Android Studio中配置network-test构建类型
3.部署network-test APK
4.运行Network Traffic Tool
app在运行的时候,会产生网络流量,而网络流量会影响到设备的电量。想要优化网络,你需要测量,并识别网络消耗的来源。网络请求的发起,主要有三方面:1.用户对app的操作 2.本身app代码发起的请求 3.服务器与app的交互(比如后台自动推送等)。
Network Traffic Tool(Android stuido DDMS中的一个功能)能让你直观的看到,你的app什么时候、怎么通过网络传输数据。通过本节课的学习,你会明白如何通过标记app代码,来对网络请求进行测量、分类,然后部署、测试、可视化的显示app的网络流量情况。

一、标记网络请求类型
因为各种各样的原因,app需要使用设备上的网络硬件。为了对app进行网络优化,你需要知道app使用网络的频率和使用的原因。为了进行性能分析,你需要将网络分成以下三种:
1.用户发起的网络请求(User-initiated network requests):用户手动发起的请求,比如更新应用。
2.应用本身代码发起的请求(App-initiated network requests):应用代码主动向远程服务器发起请求,如新闻类app,请求缓存未读文章。
3.远程服务器发起的请求(Server-initiated network requests):如推送事件。
以下步骤将告诉你,如何向你的app源码中添加代码,来标记这三种类型的网络请求数据。
Network Traffic Tool使用不同的颜色来代表不同的网络数据,你可以直观的看到网络流,并对其进行优化。

下面是使用TrafficStats类在代码中标识3种网络请求类型的方法:
1.在项目中,用三个常量来代表三种网络请求类型:
1 public static final int USER_INITIATED = 0x1000;
2 public static final int APP_INITIATED = 0x2000;
3 public static final int SERVER_INITIATED =0x3000;

2.在应用中找出网络相关代码
1、 In Android Studio, choose Edit > Find > Find in Path.
2、 Paste the following string into the Text to find field:
extends GcmTaskService|
extends JobService|
extends AbstractThreadedSyncAdapter|
HttpUrlConnection|Volley|Glide|HttpClient
3、Check Regular expression.
4、Check File mask(s) and type
*.java
.
5、Click the Find button.

3.在应用中,可以对每个可执行线程添加
setThreadStatsTag(int)方法来对网络类型进行标记。例子如下:

if (BuildConfig.NETWORK-TEST && Build.VERSION.SDK_INT >= 14) {
try {
TrafficStats.setThreadStatsTag(USER_INITIATED);
// make network request using HttpClient.execute()
} finally {
TrafficStats.clearThreadStatsTag();
}
}
  Note: 以上代码中BuildConfig.NETWORK-TEST,是告诉你这是一个测试的apk,要确保测试代码不要进入生产环境。
Note:并不是所有的网路都支持TrafficStates类,具体可以查看DDMS 中Network Traffic Tool的工具教程。

二、在Android Studio中配置network-test构建类型
运行app性能测试的时候,你的app应该尽量接近生产环境。为了实现你的网络测试,应该创建一个
network-test构建
类型,而不是使用debug构建类型。

1.用Android Studio 打开你的应用

2.通过修改项目的build.gradle文件为网络测试创建一个可调试的构建类型,如下面的代码示例所示:

android {
...
buildTypes {
debug {
// debuggable true is default for the debug buildType
}
network-test {
debuggable true
}
}
...
}

三、部署network-test APK
部署由上一个过程中配置的网络测试构建类型生成的APK:
1.检查开发模式在你的设备上是否可用。
2.使用USB连接你的测试设备。

3.在Android Studio,选择窗口左边沿的 Build Variants
4.点击Sync Project with Gradle Files按钮,为app模块填充Build Variants list with
network-test。

5.在列表中选择network-test

6.在你的设备上部署可调式的app版本,通过使用Run > Debug。

四、运行Network Traffic Tool
通过Network Traffic Tool,你可以实时看到流量的使用情况。在进行测试之前,应该确保没有缓存数据,没有其他网络数据等,说白了就是一个干净的环境。可按一下步骤来:
1.启动Android Studio并选择 Tools > Android > Android Device Monitor.启动Network Traffic Tool。 当系统询问时,允许传入网络连接。
2.在Android设备监视器窗口中,单击顶部的DDMS按钮,然后选择网络统计选项卡。 如果没有看到此选项卡,请加宽窗口,然后尝试Window > Reset Perspective.
3.从设备选项卡中的设备上的可调试应用程序列表中选择要调试的应用程序,然后单击网络统计信息标签中的开始按钮。
注意:系统可能会提示您在设备上允许USB调试。 选择“确定”以允许调试继续。
4.使用以下adb命令清除应用程式数据:
adb shell pm clear package.name.of.app
5.启动应用程序并运行一个测试计划,运行应用程序的主要用例。 您的计划还应允许应用程序空闲时间,当用户不与应用程序交互时,要允许应用程序启动和服务器启动的网络访问发生。
6.通过清除应用程序数据并再次运行测试计划来重复测试。 您应重复该测试几次,以验证性能数据的可重复性。
具体结果如图所示:



本文翻译至:http://www.cnblogs.com/sjjg/p/5392780.html。
后记:目前只是翻译,后面实操下,应该有需要更改的地方。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息