网络流量工具已废弃。如果您使用的是 Android Studio 3.0 或更高版本,则应使用 Network Profiler 检查应用通过网络传输数据的方式和时间。
在上一部分中,您使用流量标识符标记了您的应用代码,运行了测试并收集了数据。 本节课将指导您如何查看收集到的网络流量数据,并引导您采取措施来改善应用的网络性能并降低功耗。
分析应用网络流量
如果网络硬件在大量的时段都不在使用,说明应用使用网络资源的效率较高。在移动设备上,启动无线装置来发送或接收数据,以及让移动无线装置长时间保持活动状态,都会产生巨大的成本。如果您的应用正在高效地访问网络,您应该会看到它通过网络进行的通信紧密地捆绑在一起,并且中间间隔着大段应用不发出连接请求的时段。
图 1 显示来自应用的网络流量不够理想(基于网络流量工具的测量结果)。该应用频繁发出网络请求。此流量几乎没有休息时段,让无线电可以切换到低功耗待机模式。此应用的网络访问行为可能会导致无线装置长时间处于开启状态,降低了电池效率。
图 2 显示了最佳网络流量模式。应用会在爆发期发送网络请求,并相互间隔长时间的无流量时段,可让无线装置切换到待机状态。此图表显示了与图 1 相同的工作量,但对请求进行了移动和分组,以使无线装置在大多数时间处于待机状态。
如果您的应用的网络流量与图 2 中的图表类似,则说明状态不错!恭喜!如需想进一步提高网络效率,请查看优化常规网络使用中介绍的技巧。
如果您的应用的网络流量与图 1 中的图表更相似,那么现在应该更加认真地审视应用访问网络的方式。首先,您应该分析应用产生的网络流量类型。
分析网络流量类型
在查看应用产生的网络流量时,您需要了解流量来源,以便对其进行适当优化。 当应用响应用户操作时,应用产生频繁的网络活动可能完全合适,但如果应用不在前台,或者设备放在口袋或钱包中不用,则完全不合适。本部分介绍如何分析应用产生的网络流量类型,并引导您采取可提高性能的措施。
在上一课中,您为不同流量类型标记了应用代码,并使用网络流量工具收集了应用数据,还生成了活动图表,如图 3 所示。
网络流量工具会根据您在上一课中创建的标签对流量进行颜色标注。颜色基于您在应用代码中定义的流量类型常量。请回顾您的应用代码,确认哪些常量表示用户、应用或服务器发起的流量。
以下几个部分讨论了如何查看网络流量类型,并提供了有关如何优化流量的建议。
分析用户发起的网络流量
当用户通过您的应用执行特定活动时,用户发起的网络活动可能会高效地组合在一起,而当用户请求应用需要获取的额外信息时,用户发起的网络活动则会分布不均。分析用户发起的网络流量的目标是查找在一段时间内频繁使用网络的模式,并尝试创建或延长不访问网络的时间段。
由于用户请求具有不可预知的特点,您很难在应用中优化这种类型的网络使用。此外,当用户正在活跃地使用应用时,他们会希望应用能够快速响应,因此为提高效率而将请求延迟会带来不良的用户体验。一般来说,当用户正在直接与您的应用进行互动时,您应该优先考虑对用户的快速响应,而非提高网络使用效率。
下面是优化用户发起的网络流量的一些方法:
- 预取网络数据 - 当用户在您的应用中执行操作时,应用会预测后续用户操作可能需要哪些数据,在单次连接中批量获取这些数据,并一直保留到用户发出请求。
- 检查连接或监听更改 - 在执行更新之前检查网络连接或监听连接更改。
- 减少连接数 - 使用允许成组下载数据的服务器 API。
分析应用发起的网络流量
通常,您的应用代码发起的网络活动会对网络带宽的使用效率产生重大影响。在分析应用的网络活动时,请查找无活动时段并确定是否可以增加这些时段。如果您发现应用对网络的访问呈现出一致的模式,请设法将这些访问隔开,让设备无线装置可以切换到低功耗模式。
下面是优化应用发起的网络流量的一些方法:
批量处理和调度网络请求 - 推迟应用的网络请求,以便在有利于电池续航的时间一起处理。
允许系统检查连接 - 您可以让系统在应用休眠期间运行网络连接检查,以避免仅仅为了检查网络连接而花费运行应用的电池成本。
分析服务器发起的网络流量
与应用通信的服务器发起的网络活动通常也会对网络带宽的使用效率造成重要影响。在分析来自服务器连接的网络活动时,请查找无活动时段并确定是否可以增加这些时段。如果您发现来自服务器的网络活动呈现出一致的模式,请设法将此活动隔开,让设备无线装置可以切换到低功耗模式。
下面是优化服务器发起的网络流量的一些方法:
- 使用 FCM 进行服务器更新 - 考虑使用 Firebase Cloud Messaging 服务(而不是轮询)进行服务器端更新。