安卓性能优化-网络优化建议

移动设备因为其独特的网络环境,应用可以获取的网络速度、网络质量、网络带宽都有很大的限制,如何在这种限制环境下表现出优秀的用户体验,就涉及到应用的网络环境优化了,下面仅从几个常见的方面给出几点建议。

移动设备与服务器接口交互的优化主要体现在传输速度、请求频次、资源消耗几个方面。客户端自身的优化则主要体现在缓存策略、带宽利用几个方面。

数据压缩

使用Gzip来压缩请求体和返回体, 减少传输数据量, 从而减少流量消耗.

数据格式

目前主流的数据传输格式有json、xml等,xml现在已经基本不使用;json数据解析方便,体积小,使用广泛;在此基础上,其实还有Protocol Buffer这些高效的数据格式。

资源请求参数化

这个主要体现在资源文件的请求上,比如图片。我们可以根据不同的场景来添加请求参数请求不同配置的资源,在获取图片时告知服务器需要的图片的宽高, 以便服务器给出合适的图片, 避免浪费。举个例子:我们在信息流中可以请求中分辨率的小图,在详情页面中请求高分辨率的大图。

接口设计

在接口的设计过程中,我们可以尽可能的合并接口,比如:注册成功后,我们可以直接保存登录状态而不用在此调用登录接口。

图片优化

图片在安卓系统中是以大对象存在的。对于图片的优化也是异常重要。我们可以从下面几点来进行一些优化处理工作。

  1. 图片格式选择,我们可以优先选择WebP图片格式来进行网络传输。WebP可以输出一个和原图几乎完全一样的图片。
    同样的照片,采用WebP格式可大幅节省流量,相对于JPG格式的图片,流量能节省将近 25% 到 35 %;相对于 PNG 格式的图片,流量可以节省将近80%。最重要的是使用WebP之后图片质量也没有改变。

  2. 基于当前网络环境来选择加载的图片质量。在网络环境比较差的时候,选择加载质量偏低的图片资源

  3. 图片的本地缓存策略,这在一些图片加载框架中几乎是必不可少的

  4. 占位图片的使用

网络缓存

适当的缓存, 既可以让我们的应用看起来更快, 也能避免一些不必要的流量消耗,通过缓存机制,我们甚至可以实现部分时刻的无网络访问。其中主要包括:

  • 利用数据库来处理数据
  • 利用ContentProvider处理数据
  • 数据的持久化存储策略

网络状态监听

应用通过监听设备的状态:

  • 休眠状态
  • 充电状态
  • 网络状态

来针对当前状态进行一些优化。比如在弱网状态下:

  • 压缩/减少数据传输量
  • 利用缓存减少网络传输
  • 不自动加载图片
  • 界面先反馈, 请求延迟提交例如, 用户点赞操作, 可以直接给出界面的点赞成功的反馈,稍后在进行接口请求

当然在网络环境较好时,可以适当进行一些复杂的网络任务:

  • 比如配置请求
  • 视频预加载、图片预加载等
  • 部分详情数据
  • 更多数据的预加载

指定接口请求策略

优秀的策略可以提高带宽使用率,增强使用体验。比如说:

  • 对请求划分优先等级来最小化用户等待信息的时间。
  • 请求进行排序。比如,文本排在富媒体之前
  • 检测网络改变,请求策略做出相应的改变
  • 占位符、占位资源的引入,提高视觉感受
  • 请求打包。减少请求次数。对于一些接口类如统计,无需实时上报,将统计信息保存在本地,然后根据策略统一上传。
  • 本地数据优先,延迟网络请求。通过把网络数据保存在本地,缓存数据,并且把发出的请求添加到队列中,当网络恢复的时候再及时发出。

IP直连

DNS解析的失败率占联网失败中很大一种,而且首次域名解析一般需要几百毫秒。针对此,我们可以不用域名,才用IP直连省去DNS解析过程,节省这部分时间。

其他

网络优化, 是App优化中相当重要的一项优化。指定完善的资源请求策略、良好的缓存策略、优秀的接口都是属于网络优化的范畴,当然,可能还有很多其他的优化手段,需要在日常开发中慢慢体会。

发布了46 篇原创文章 · 获赞 21 · 访问量 7068

猜你喜欢

转载自blog.csdn.net/lotty_wh/article/details/105190549