快速处理用户请求有助于确保良好的用户体验,尤其是涉及需要访问网络的用户操作时。在优化用户操作直接触发的网络使用时,您应优先考虑低延时而非省电,以便提供最快的响应。既要为您的应用获取最佳的网络流量配置文件,又要确保您的用户获得快速响应,这可能有点困难。
本节课将指导您如何针对用户发起的操作优化网络使用并减少耗电量。
预取网络数据
预取数据可有效减少应用运行的独立数据传输会话数量。预取意味着,当用户在您的应用中执行某项操作时,应用会预测下一系列用户操作最有可能需要哪些数据,并批量获取这些数据。耗电量得到降低的原因有两个:
- 由于您的应用只是在移动无线装置已经从用户的操作唤醒时预取数据,因此不会产生唤醒移动无线装置的开销。
- 应用会为预期的用户操作预取数据,否则每个操作都可能需要通过单独的请求来唤醒移动无线装置。
提示:要了解您的应用是否可能会受益于预取功能,请检查应用的网络流量,并查找下述情况:特定系列的用户操作几乎总会在任务期间产生多个网络请求。例如,假设某个应用在用户查看文章内容时增量下载文章内容,它或许能够预取已知用户查看的类别中的一篇或多篇文章。
观看有关预取的视频,其中说明了预取的定义、使用场合以及预取的数据量。如需了解详情,请参阅优化下载以实现高效网络访问。
检查连接或监听更改
搜索手机信号是移动设备上最耗电的操作之一。在发送用户发起的网络请求之前,您的应用应始终检查连接。如果您使用了调度服务,调度程序会自动为您执行此操作。
- 如果只有 Activity 中的某些按钮依赖于网络连接,请在发送网络请求之前使用连接管理器检查网络连接,操作说明见监控连接变化。如果没有网络,该应用不会强制移动无线装置进行搜索,因此可以节省电量。
- 如果整个 Activity 的界面在没有网络访问的情况下无法正常工作,请使用随需操纵广播接收器。当您的 Activity 位于前台时,此方法会监听连接更改,并在没有连接时阻止网络请求继续处理。也就是说,如果您的应用检测到连接丢失,则会停用除连接更改接收器之外的所有接收器。例如,某个新闻应用会以全屏视图显示包含新闻摘要的 Activity,而不进行预取。用户点按的任何摘要都需要网络连接。
对于用户发起的流量,最佳做法是先使用连接管理器检查连接,如果没有连接,请针对何时建立连接调度网络请求。调度程序将使用指数退避算法等方法来节省电量,这意味着每次尝试连接失败时,调度程序会在下次重试之前将延迟翻倍。
注意:要针对应用发起的流量检查连接,请参阅优化应用发起的网络使用。
减少连接数量
一般来说,重用现有网络连接比发起新网络连接的效率更高。通过重复使用连接,网络还可以更智能地对拥塞和相关的网络数据问题做出响应。如需详细了解如何减少应用使用的连接数量,请参阅优化下载以实现高效网络访问。