Android性能优化之网络优化
一.网络优化的重要性
网络请求是几乎每个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性能优化之网络优化相关推荐
- Android 性能优化之网络优化
前言 随着移动网络的不断升级,客户端的网络传输由3G进化到Wifi.4G,且Wifi场景越来越多.虽然网络环境在变好,但也对网络的应用提出了更高的要求,会发现很多大厂都十分重视网络指标,如果技术人员不 ...
- Android性能优化典范 - 第6季
原文出处:http://hukai.me/android-performance-patterns-season-6/ 序言 这是Android性能优化典范第6季的课程学习笔记,最近个人事情比较多,从 ...
- Android开发之Android性能优化记录
Android 性能优化 Android 中的性能优化在我看来分为以下几个方面:内存优化.布局优化.网络优化.安装包优化: 内存优化: 下一个问题就是: 布局优化: 布局优化的本质就是减少 View ...
- android服务器 性能,Android性能优化(中)
Android性能优化 在上一篇中介绍了性能优化的概念.内存泄漏和性能优化方式 Android性能优化(上) 我们继续说说Android性能优化 数据库性能优化 索引 简单的说,索引就像书本的目录,目 ...
- Android性能优化 笔记
说明 这篇文章是将很久以来看过的文章,包括自己写的一些测试代码的总结.属于笔记的性质,没有面面俱到,一些自己相对熟悉的点可能会略过. 最开始看到的性能优化的文章,就是胡凯的优化典范系列,后来又陆续看过 ...
- Android 性能优化探究
使用ViewStub动态载入布局.避免一些不常常的视图长期握住引用: ViewStub的一些特点: 1. ViewStub仅仅能Inflate一次,之后ViewStub对象被置空:某个被ViewStu ...
- Android 性能优化探究,不愧是Alibaba技术官
4)Why 60fps? 我们通常都会提到60fps与16ms,可是知道为何会是以程序是否达到60fps来作为App性能的衡量标准吗?这是因为人眼与大脑之间的协作无法感知超过60fps的画面更新. 1 ...
- Android性能优化典范(五)
作者简介: 胡凯(@胡凯me),腾讯Android工程师,热爱开源与分享,维护Android官方培训课程协作项目,关注Android应用性能优化的总结与分享,推崇Android官方最佳实践.个人博客: ...
- 史上最全Android性能优化方案解析
Android中的性能优分为以下几个方面: 布局优化 网络优化 安装包优化 内存优化 卡顿优化 启动优化 -- 一.布局优化 布局优化的本质就是减少View的层级.常见的布局优化方案如下: 在Line ...
最新文章
- spring+mybatis之声明式事务管理初识(小实例)
- js 图形化工作流设计器
- Tomcat源码解析五:Tomcat请求处理过程
- 自动为DEV GridView控件添加SizeChanged事件
- c语言给bmp图片加滤镜,关于BMP位图透明通道的详解制作教程, 教你输出透明的BMP位图...
- 搭建zookeeper集群环境详解
- 机器学习笔记(四)——最大似然估计
- java实现顺序表和链表_Java: 实现顺序表和单链表的快速排序
- Jmeter使用方法
- JAVA中pin什么意思_银行业加密算法,PIN相关算法(java-国密)
- Linux域名IP映射
- 神棍节献礼之——TJU1111 MPI Maelstrom(最短路)
- 小马哥----高仿苹果5se 机型界面图面面观,低配机型 谨防假冒
- 数据库原理:了解范式(1NF、2NF、3NF、BCNF),做例题快速弄懂
- 去哪儿网首页-周末游组件开发(6)
- 什么是老域名?选择老域名要注意什么?
- 420个生活小窍门,很有用的哦
- 介绍PostgreSQL CTE(common table expressions)
- 浅谈for循环在语法设计上的必要性
- linux中无ll命令的解决方法