Android性能优化之网络优化

论坛 期权论坛 脚本     
匿名技术用户   2021-1-7 09:04   349   0

一.网络优化的重要性

网络请求是几乎每个APP都需要用到的,网络请求的快慢直接影响到用户的使用体验。

很多人觉得网络优化是服务端的事情,客户端只要找个好的网络请求框架(如OKHttp)就可以了,并不需要再去做什么优化。其实不然,客户端这边在网络优化方面还是有很多事情可以做的。

二.网络优化主要从哪些方面入手呢?

1.网络库的选择?

相信大家网络请求方面都是使用开源的网络库,那么为什么要使用网络库呢?

(1)网络库统一了接口,无论同步还是异步接口的简单易用,还可以统计进行网络数据解析。

(2)网络库分装了连接池的使用,降低了并发连接数。

(3)网络库内部实现了响应缓存避免了大量的重复访问。

(4)异步请求方面做了很好的封装。

因此选择一个合适的网络库是非常重要的,现在使用流行的网络库有Volley、okhttp、Retrofit等。

(1)Volley是基于HttpURLConnection支持图片加载、网络请求排序、优先级处理、缓存,扩展性好,

但因为Volley使用的Request和Response都是把数据放到Byte数组中,若数据大等于数组大,消耗内存,

所以Volley适合数据量小的轻量级应用。

(2)okhttp是基于原生http的,支持同步异步请求、支持gzip减少数据流量、缓存响应数据、自动重连等,性能好请求处理速度快,数据量大和小的应用都适用。

(3)Retrofit底层网络框架是基于okhttp的,因此拥有okhttp的特点,通过注解配置请求,封装好,代码量少。

2.请求图片处理

(1) 加载图片时按需加载,如缩略图加载小图片,查看大图时才加载大图片。

(2)使用图片加载框架,图片加载框架对缓存做了很好的优化,流行的图片加载框架有Glide、Picasso等。

3.常用数据缓存

(1)对于常访问的数据或首页数据,尽量缓存在本地,加载时优先加载本地数据,然后在请求网络数据,更新页面并更新缓存。

(2)在网络丢失或者网络差需要保存数据时, 网数据保存在本地,并且把发出的请求添加到队列中,当网络恢复的时候再及时发 出。

4.网络分级请求

(1)将网络分成移动网络、宽带网络、强网络、弱网络,不同的网络环境对请求进行不同的处理,例如在移动网络下需要进行下载任务时,停止或提示用户,在弱网络下对图片的请求的区分等。

(2) 网络状态可以由TelephonyManager.getNetworkType()方法获取到。

(3)对下载和上传文件采用断点续传功能,不浪费用户之前耗费的时间和流量。

5.流量使用优化

(1)局部更新 、分页加载

(2) 数据加载采用增量,有更新数据时才请求新数据,合并客户端旧数据。

(3)尽量避免客户端轮询,采用服务端推送方式

6.请求数据优化

(1)合并请求,可以将多个请求合并成一个接口请求

(2)压缩请求数据

(3)精简数据格式,只取需要的数据字段

三.网络使用分析

使用AndroidStudio3.0新增的Profile分析网络使用情况:

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP