<返回更多

我的Android网络优化为什么不行?

2022-04-27    Android秃老师
加入收藏

前言:为什么网络优化比别人慢?优化那些还不够?应该加强哪里?

1.Android应用为什么需要考虑网络优化,主要基于以下几个原因:

  1. 流量:App的移动网络流量消耗对用户来说是比较敏感的;
  2. 电量:网络请求对电量的消耗是比较大的,影响手机的待机时间;
  3. 用户体验:网络请求是耗时操作,如果App请求等待时间长,会给用户网络卡, 应用反应慢的感觉。

网络请求优化的目的是尽可能地减少用户等待的时间、减少用户的流量使用、减少对手机电量的消耗,最终达到提升用户体验。

2.网络性能优化主要从如下几个方面着手:

  1. 流量消耗
  2. 网络速度
  3. 获取数据优化
  4. 接口设计
  5. 弱网优化

一丶流量消耗优化

所谓流量优化,就是在保证数据正确的前提下,如何保证尽可能地少消耗用户流量。虽然现在的流量费用越来越便宜,但是减少流量本身并不是最重要的目的,而是提升用户体验带来的结果。

1.使用本地缓存,减少网络请求

分为几种情况:

2.合理合并api接口,减少网络请求

这种方案可以使得多次网络请求合并为一次,减少网络连接来回往返的等待时长。

比如有一种场景:App 本地数据库缓存有N个表,当老用户卸载重装时,首次检查需要把远端的数据一次性download到本地来,保证两端的一致性。

由于之前必然为每个表设计了一个api,但是在这种场景下,如果还是继续使用这些api的话,就需要N次网络请求,结果不仅会造成N次网络I/O和磁盘写入I/O,还会使得服务端查找性能降低,用户等待时间较长,本地磁盘写入性能降低。

针对这种场景,完全可以设计一个bulk sync api把这些api整合为一个,这样一来客户端只需一次网络I/O即可获取所有数据,服务端查找性能也提升了一个数量级,本地磁盘I/O也可以把此次返回的数据当成一次事务一次性插入数据库中,大大减少了用户等待时间,同时也提升了网络和本地磁盘写入性能。

3.减少网络请求的数据量

当网络请求不可避免的情况下,此时就要考虑如何减少网络请求携带的数据量。

同样也分几种情况:

二.丶速度优化

在进行网络流量优化的同时;由于网络请求次数;请求携带的数据量变少了;这其实也是在变相地提高网络速度。

另外,还有其他一些方式:

三丶获取数据优化

四丶接口设计

1.API设计

App与Server之间的API设计要考虑网络请求的频次, 资源的状态等. 以便App可以以较少的请求来完成业务需求和界面的展示。

2.Gzip压缩

使用Gzip来压缩request和response, 减少传输数据量, 从而减少流量消耗

考虑使用Protocol Buffer代替JSON

从前我们传输数据使用XML, 后来使用JSON代替了XML, 很大程度上也是为了可读性和减少数据量(当然还有映射成POJO的方便程度)。

Protocol Buffer是google推出的一种数据交换格式。

如果我们的接口每次传输的数据量很大的话, 可以考虑下protobuf, 会比JSON数据量小很多。当然相比来说, JSON也有其优势, 可读性更高。

3.图片的Size

.NETwork Monitor中看到的22s到27s之间的有多次请求, 且数据量还很大. 就是在获取图片资源。图片相对于接口请求来说, 数据量要大得多. 故而也是我们需要优化的一个点。

我们可以在获取图片时告知服务器需要的图片的宽高, 以便服务器给出合适的图片, 避免浪费。现在很多公司的图片资源都是使用第三方的云存储服务的(七牛, 阿里云存储之类的)

以七牛为例, 可以在请求图片的url中添加诸如质量, 格式, width, height等path来获取合适的图片资源:

我的Android网络优化为什么不行?

 

五丶弱网优化


1.弱网标准

百度其中就有使用的是一个循序渐进的过程,通过三个阶段来建立一个弱网标准。

2.弱网检测

网络探测是弱网检测的基础,目标是能够即时、正确的检测出网络质量,我们把网络探测分成两个部分,主动网络探测被动网络采集

3.主动网络探测

主动检测,就是在触发了某些特定条件后,主动的进行网络检测,并按照一定的条件检查出是否为弱网状态。架构图如下所示:

我的Android网络优化为什么不行?

 

4.弱网优化

利用工具模拟弱网, 在弱网情况下体验我们的App. 一般来说, 网络延迟在60ms内, 是OK的, 超过200ms就比较糟糕了. 我们需要做的是在比较糟糕的网络环境下还能给用户较好的体验。

弱网优化, 本质上是在弱网的情况下能让用户流畅的使用我们的App. 我们要做的就是结合上述的优化项:

五丶结尾

网络优化,是App优化中相当重要的一项优化. 除了客户端, 接口的优化外, 很多一部分优化还依赖于服务器端, 包括服务器端的代码开发, 部署方式等。看到这里想必大家心里应该都知道,应该学习哪块;哪里学习不够;和别人的区别在哪吧。

自己也是从事Android开发5年有余了;整理了一些Android开发技术核心笔记和面经题纲,如有需要的同学请私信我回复“核心笔记”或“面试”领取!

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>