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性能优化之网络优化_第1张图片

   

你可能感兴趣的:(android知识点,Android性能优化)