Collecting Network Traffic Data

1.This lesson teaches you to

  1. Tag Network Requests        标记网络类型
  2. Configure a Network Test Build Type  在as中配置测试模式才能测试网络
  3. Deploy the Network Test APK     在真机上部属网络调试应用
  4. Run Network Traffic Tool        NetWork Traffic 工具 

  The network traffic generated by an app can have a significant impact on the battery life of the device where it is running. In order to optimize that traffic, you need to both measure it and identify its source. Network requests can come directly from a user action, requests from your own app code, or from a server communicating with your app.

 网络连接可能发自本地应用向远程服务器发送请求,也可能来自远程服务器。

  The Network Traffic tool (part of the DDMS tools) enables you to view how and when your app transfers data over a network.

  This lesson shows you how to measure and categorize network requests by tagging your source code, then shows you how to deploy, test and visualize your apps's network traffic.

2.Tag Network Requests 标记网络类型

  Apps use the networking hardware on a device for various reasons. In order to properly optimize your app's use of networking resources, you must understand how frequently your app is using the network and for what reasons. For performance analysis purposes, you should break down use of network hardware into these categories:

 网络请求的3种类型:
  • User-initiated network requests - Requests initiated by the user, such as a user request for an updated articles list in a news app.

    用户手动发起,如更新应用。
  • App-initiated network requests - Requests initiated within Android app code that are not used to immediately satisfy a user action, such as an app request to cache the text of unread articles in a news app.
    应用内部代码向远程服务器发起请求。
  • Server-initiated network requests - Requests initiated by a server to your app that are not used to immediately satisfy a user action, such as notification of a newly available article in a news app.
    远程服务器向应用发送推送。

  This procedure shows you how to tag your app's source code with constants to categorize traffic as one of these three request types. The Network Traffic tool represents each type of traffic with a different color, so you can visualize and optimize each traffic stream separately. The technique described here reports network traffic based on the execution of threads in your app which you identify as a user, app or server source.

 Network Traffic 工具把每种网络请求按颜色分开。

 下面是使用TrafficStats类在代码中标识3种网络请求类型的方法:
  1. In your app's development project, define three constants to represent the different types of network use:

     public static final int USER_INITIATED = 0x1000;
    public static final int APP_INITIATED = 0x2000;
    public static final int SERVER_INITIATED =0x3000;
  2. Find networking code in your app by searching for the most common classes used for this purpose:
    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. Based on your findings in the previous step, tag your app's use of network traffic by adding the setThreadStatsTag(int) method to each execution thread in your app that uses network resources, as shown in the following code example.
     if (BuildConfig.NETWORK-TEST && Build.VERSION.SDK_INT >= ) {
    try {
    TrafficStats.setThreadStatsTag(USER_INITIATED);
    // make network request using HttpClient.execute()
    } finally {
    TrafficStats.clearThreadStatsTag();
    }
    }

    Note: Ensure the tagging does not get into your production code by making inclusion of this code conditional, based on the build type used to generate the APK. In the example above, the BuildConfig.NETWORK-TEST field identifies this APK as a test version.

  Note: This technique for tagging network traffic from your app depends on how the APIs that you are using access and manage network sockets. Some networking libraries may not allow the TrafficStats utilities to tag traffic from your app.

 并不是所有的网络库都支持 TrafficStats 。Network Traffic tool 工具教程 Detailed Network Usage in DDMS

  For more information about tagging and tracking network traffic with the Network Traffic tool, see Detailed Network Usage in DDMS.

3.Configure a Network Test Build Type 在as中配置测试模式才能测试网络

  When you run performance tests, your APK should be as close as possible to the production build. In order to achieve this for your network testing, create a network-test build type, rather than using debug build type.

  1. Open your app in Android Studio.
  2. Create a debuggable build type for your network test by modifying your project's build.gradle file as shown in the following code example:
     android {
    ...
    buildTypes {
    debug {
    // debuggable true is default for the debug buildType
    }
    network-test {
    debuggable true
    }
    }
    ...

4.Deploy the Network Test APK 部属网络测试的apk

  To deploy the APK generated by the network-test build type configured in the previous proceedure:

  1. Check that Developer Options are enabled on your test device. For information about how to check and enable this option, see Using Hardware Devices.
  2. Using a USB cable, connect your test device to your development computer.
  3. In Android Studio, select Build Variants on the left edge of the window.
  4. Click the Sync Project with Gradle Files button to populate the Build Variants list with network-test for the app module.
  5. Choose network-test from the list.
  6. Deploy the debuggable version of your app to your device by choosing Run > Debug.

5.Run Network Traffic Tool

  The Network Traffic tool in Android Studio helps you see how your app uses network resources in real time, while it is running.

  To improve the repeatability of your testing, you should start with a known initial state for your app by clearing app data. The following procedure includes a step that shows you how to clear all app data including previously cached data and networking data. This step puts your app back to a state where it must re-cache all previously cached data. Do not skip this step.

 Network Traffic工具测试app网络请求时,就保证app启动时没有缓存数据。注意,这步是必需的。

  To start the Network Traffic tool and visualize the network requests:

  1. Start the Network Traffic tool by launching Android Studio and choosing Tools > Android > Android Device Monitor. When asked, allow incoming network connections.
  2. In the Android Device Monitor window, click the DDMS button along the top and choose the Network Statistics tab. If you don't see this tab, widen the window and then try Window > Reset Perspective.
  3. Select your app to debug from the list of debuggable apps on your device in the Devices tab, then click theStart button in the Network Statistics tab.

    Note: You may be prompted to Allow USB Debugging on your device. Select OK to allow debugging to proceed.

  4. Clear your app data using the following adb command:
    adb shell pm clear package.name.of.app
  5. Start your app and run a testing plan that exercises your app's primary use cases. Your plan should also allow for app idle time, where the user is not interacting with the app, to allow app-initiated and server-initiated network access to occur.
  6. Repeat the test by clearing the app data and running your test plan again. You should repeat the test a few times to verify the repeatability of your performance data.

  Use of tagging for network traffic helps you visually distinguish each request category by producing a different color for each network traffic in the Network Traffic tool, as shown in Figure 1.

    Figure 1. Network traffic tagged for the three categories.

Android 性能优化(5)网络优化 (1) Collecting Network Traffic Data 用Network Traffic tool :收集传输数据的更多相关文章

  1. Android性能优化典范第二季

      Google前几天刚发布了Android性能优化典范第2季的课程,一共20个短视频,包括的内容大致有:电量优化,网络优化,Wear上如何做优化,使用对象池来提高效率,LRU Cache,Bitma ...

  2. Android性能优化典范(二)

    Google前几天刚发布了Android性能优化典范第2季的课程,一共20个短视频,包括的内容大致有:电量优化,网络优化,Wear上如何做优化,使用对象池来提高效率,LRU Cache,Bitmap的 ...

  3. android app性能优化大汇总(google官方Android性能优化典范 - 第2季)

    Google前几天刚发布了Android性能优化典范第2季的课程,一共20个短视频,包括的内容大致有:电量优化,网络优化,Wear上如何做优化,使用对象池来提高效率,LRU Cache,Bitmap的 ...

  4. Android性能优化典范 - 第2季

    Google发布了Android性能优化典范第2季的课程,一共20个短视频,包括的内容大致有:电量优化,网络优化,Wear上如何做优化,使用对象池来提高效率,LRU Cache,Bitmap的缩放,缓 ...

  5. Android性能优化问题总结

    性能优化这块,分为UI性能优化.内存优化.数据库优化.网络优化.耗电优化等等.可以从1.如何发现问题,2.怎么解决问题,3.解决效果对比,这几个方面去描述.举个简单例子——UI优化,可以从 UI出现什 ...

  6. Android 性能优化探究

    使用ViewStub动态载入布局.避免一些不常常的视图长期握住引用: ViewStub的一些特点: 1. ViewStub仅仅能Inflate一次,之后ViewStub对象被置空:某个被ViewStu ...

  7. 我把阿里、腾讯、字节跳动、美团等Android性能优化实战整合成了一个PDF文档

    安卓开发大军浩浩荡荡,经过近十年的发展,Android技术优化日异月新,如今Android 11.0 已经发布,Android系统性能也已经非常流畅,可以在体验上完全媲美iOS. 但是,到了各大厂商手 ...

  8. 【腾讯Bugly干货分享】Android性能优化典范——第6季

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/580d91208d80e49771f0a07c 导语 这里是Android性能优 ...

  9. android 性能优化

    本章介绍android高级开发中,对于性能方面的处理.主要包括电量,视图,内存三个性能方面的知识点. 1.视图性能 (1)Overdraw简介 Overdraw就是过度绘制,是指在一帧的时间内(16. ...

  10. Android性能优化典范第一季

    2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App.课程专题不仅仅介绍了Android系统中有关 ...

随机推荐

  1. 自己打断点走的struts流程&拦截器工作原理

    ①. 请求发送给 StrutsPrepareAndExecuteFilter ②. StrutsPrepareAndExecuteFilter 判定该请求是否是一个 Struts2 请 求(Actio ...

  2. linux程序分析工具

    ldd和nm是Linux下两个非常实用的程序分析工具.ldd是用来分析程序运行时需要依赖的动态链接库的工具,nm是用来查看指定程序中的符号表信息的工具,objdump用来查看源代码与汇编代码,-d只查 ...

  3. Codeforces 645C Enduring Exodus【二分】

    题目链接: http://codeforces.com/contest/645/problem/C 题意: 给定01串,将k头牛和农夫放进, 0表示可以放进,1表示不可放进,求农夫距离其牛的最大距离的 ...

  4. golang time.Duration()的问题解疑

    原文:  How to multiply duration by integer? 看到golang项目中的一段代码, ---------------------------------------- ...

  5. 【LeetCode-面试算法经典-Java实现】【067-Add Binary(二进制加法)】

    [067-Add Binary(二进制加法)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given two binary strings, return thei ...

  6. 网卡bood

    一.网卡bood (1)网卡bond(绑定),也称作网卡捆绑.就是将两个或者更多的物理网卡绑定成一个虚拟网卡.网卡是通过把多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在应用部署 ...

  7. HDOJ 5387 Clock 水+模拟

    Clock Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Subm ...

  8. 中国第二代身份证验证js代码

    以下这部分代码截取自盛大的某个网页.详细我就不给url了.以下是相应的js代码: iW = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1); iSum ...

  9. Redis开源项目的终极杀手? ——CRUG解读Redis开源协议变更

    引言: 数据库制造商 Redis Labs 本周将公司开发的Redis 模块从 AGPL 迁移到将 Apache v2.0 与 Commons Clause 相结合的许可证,对许可证涵盖的软件作了限制 ...

  10. Linux环境部署(一)

    最近被老大安排了个任务,解决Linux的安装部署问题,特做如下笔记,以便下次安装配置: --------------------Linux上部署项目------------------- 1.解压缩相 ...