一.网络优化的重要性

网络请求是几乎每个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分析网络使用情况:

Android性能优化之网络优化相关推荐

  1. Android 性能优化之网络优化

    前言 随着移动网络的不断升级,客户端的网络传输由3G进化到Wifi.4G,且Wifi场景越来越多.虽然网络环境在变好,但也对网络的应用提出了更高的要求,会发现很多大厂都十分重视网络指标,如果技术人员不 ...

  2. Android性能优化典范 - 第6季

    原文出处:http://hukai.me/android-performance-patterns-season-6/ 序言 这是Android性能优化典范第6季的课程学习笔记,最近个人事情比较多,从 ...

  3. Android开发之Android性能优化记录

    Android 性能优化 Android 中的性能优化在我看来分为以下几个方面:内存优化.布局优化.网络优化.安装包优化: 内存优化: 下一个问题就是: 布局优化: 布局优化的本质就是减少 View ...

  4. android服务器 性能,Android性能优化(中)

    Android性能优化 在上一篇中介绍了性能优化的概念.内存泄漏和性能优化方式 Android性能优化(上) 我们继续说说Android性能优化 数据库性能优化 索引 简单的说,索引就像书本的目录,目 ...

  5. Android性能优化 笔记

    说明 这篇文章是将很久以来看过的文章,包括自己写的一些测试代码的总结.属于笔记的性质,没有面面俱到,一些自己相对熟悉的点可能会略过. 最开始看到的性能优化的文章,就是胡凯的优化典范系列,后来又陆续看过 ...

  6. Android 性能优化探究

    使用ViewStub动态载入布局.避免一些不常常的视图长期握住引用: ViewStub的一些特点: 1. ViewStub仅仅能Inflate一次,之后ViewStub对象被置空:某个被ViewStu ...

  7. Android 性能优化探究,不愧是Alibaba技术官

    4)Why 60fps? 我们通常都会提到60fps与16ms,可是知道为何会是以程序是否达到60fps来作为App性能的衡量标准吗?这是因为人眼与大脑之间的协作无法感知超过60fps的画面更新. 1 ...

  8. Android性能优化典范(五)

    作者简介: 胡凯(@胡凯me),腾讯Android工程师,热爱开源与分享,维护Android官方培训课程协作项目,关注Android应用性能优化的总结与分享,推崇Android官方最佳实践.个人博客: ...

  9. 史上最全Android性能优化方案解析

    Android中的性能优分为以下几个方面: 布局优化 网络优化 安装包优化 内存优化 卡顿优化 启动优化 -- 一.布局优化 布局优化的本质就是减少View的层级.常见的布局优化方案如下: 在Line ...

最新文章

  1. spring+mybatis之声明式事务管理初识(小实例)
  2. js 图形化工作流设计器
  3. Tomcat源码解析五:Tomcat请求处理过程
  4. 自动为DEV GridView控件添加SizeChanged事件
  5. c语言给bmp图片加滤镜,关于BMP位图透明通道的详解制作教程, 教你输出透明的BMP位图...
  6. 搭建zookeeper集群环境详解
  7. 机器学习笔记(四)——最大似然估计
  8. java实现顺序表和链表_Java: 实现顺序表和单链表的快速排序
  9. Jmeter使用方法
  10. JAVA中pin什么意思_银行业加密算法,PIN相关算法(java-国密)
  11. Linux域名IP映射
  12. 神棍节献礼之——TJU1111 MPI Maelstrom(最短路)
  13. 小马哥----高仿苹果5se 机型界面图面面观,低配机型 谨防假冒
  14. 数据库原理:了解范式(1NF、2NF、3NF、BCNF),做例题快速弄懂
  15. 去哪儿网首页-周末游组件开发(6)
  16. 什么是老域名?选择老域名要注意什么?
  17. 420个生活小窍门,很有用的哦
  18. 介绍PostgreSQL CTE(common table expressions)
  19. 浅谈for循环在语法设计上的必要性
  20. linux中无ll命令的解决方法

热门文章

  1. 从mkv文件中提取src格式等字幕流
  2. VS2017常用快快捷键
  3. 说说个人量化交易怎么办理开户和获取交易接口
  4. 五子棋比赛程序对战平台
  5. 利用coding 部署项目环境
  6. 无线振弦采发仪VS104~416振弦传感器数据采集仪应用工程监测实用
  7. 写文本到txt文件的Sub过程
  8. 【专题5: 硬件设计】 之 【16.二极管/三极管的钳位功能】
  9. 【大数据分析专业毕设之基于python的手机销售大数据分析可视化系统】
  10. 龙岗CBD中心:恒大集团向前村城市更新旧改项目!