android三个流量优化方案(建议收藏)(代码片段)

不想在熬夜. 不想在熬夜.     2022-12-13     504

关键词:

前言

套餐虽然优惠,流量还是很贵,对用户而言网络流量就是钱呐!用户习惯打开系统自带 APP 流量统计功能,从 APP 的角度,总不希望用户一眼看出自家的 APP 是流量大户,所以有必要花时间知道 APP 的流量怎么流失的。但是系统的流量统计功能只是很粗略的对每个 APP 消耗的流量总量(分时)进行统计,但是程序员需要对 APP 的流量进行更精细、多维度的分析,从而有针对性地优化 APP 数据流量,所以有了以下几种方案。
该文不仅仅包括流量优化,文末还列举了Android程序各类性能优化,请慢慢阅读

一、数据缓存

OkHttp 缓存

如果我们仔细跟一下自己项目中的接口,就会发现很多对实时性没有那么高要求的接口,使用缓存不仅可以节约流量,而且能大幅提升数据访问速度。

我们常用的网络库,比如 OkHttp 和 Volley,都有比较好的缓存实践。

而且没做缓存对用户体验也不好,一般的 App 会在打开后显示一个无数据的界面,和展示上一次的数据相比,这个用户体验其实是比较差的。
1. 无网拦截器
下面我们重点看下 OkHttp 的缓存实践,首先定义一个无网拦截器。

然后是给 OkHttpClient 添加拦截器。

添加了无网络拦截器后,当无网络的情况下打开我们的 App 时,也能获取到上一次的数据,也能使用 App,这样就能提升用户体验。

2. OkHttp 缓存处理流程
OkHttp 的缓存拦截器对于请求的处理流程如下。

过期时间与增量更新

1. 过期时间

在服务端返回的数据中加上一个过期时间,这样我们每次请求的时候判断一下有没有过期,如果没有过期就不需要去重新请求。

2. 增量更新

数据增量更新的具体思路,就是在数据中加上一个版本的概念,每次接收数据都进行版本对比,只接收有变化的数据。

这样传输的数据量就会减少很多,比如省市区和配置等数据比较少更新,如果每次都要请求省市区的数据,这就是在浪费流量。

我们只需要更新发生变化的数据,因为和服务器相关比较密切,在这里就不给大家举例了。

二、数据压缩

1. Gzip

对于 Post 请求,Body 是用 Gzip 压缩的,也就是请求的时候带上 Gzip 请求头,服务端返回的时候也加上 Gzip 压缩,这样数据流就是被压缩过的。

2. 压缩请求头

请求头也占用一定的体积,在请求头不变的情况下,我们可以只传递一次,以后都只需要传递上一次请求头的 MD5 值,服务端做一个缓存,在需要请求头中的某些信息时,就可以直接从之前的缓存中取。

3. 合并网络请求

每一个网络请求都会有冗余信息,比如请求头,而合并网络请求就可以减少冗余信息的传递;

三、图片压缩

1. 缩略图

图片压缩的第一个手段,就是在列表中优先使用缩略图,因为展示原图会加大内存消耗和流量消耗,而且在列表中直接展示原图没有意义。

下面是原图和缩略图的对比大小,缩略图尺寸为原图的 50%,大小为原图的 10%。

2. WebP
图片压缩的第二个手段,就是使用 Webp 格式,下面是同一张图片在 PNG 格式和 WebP 格式下的对比,WebP 格式的大小为 PNG 格式的 51%。

3. Luban

比如我们在上传图片的时候,做一个压缩比如在本地是一个 2M 的图片,完整地上传上去意义不大,只会增加我们的流量消耗,最好是压缩后再上传。

而在图片压缩上做得比较好的就是鲁班,下面我们来看下鲁班的使用方法。

首先添加依赖。

dependencies 
  // 图片压缩
  implementation 'top.zibin:Luban:1.1.8'

然后添加对图片进行压缩。

下面这张图片的原始大小为 1.6M,压缩后变成了 213KB,体积为原始大小的 13%。

以上就是本文所有内容了,有需要了解更多Android性能优化的,请往下看。(文末有惊喜)

ANR问题解析

crash监控方案

启动速度与执行效率优化项目实战

内存优化

耗电优化

网络传输与数据存储优化

apk大小优化

项目实战

以上资料,有需要的可在我的QQ技术交流群里可以自助拿走,如果在学习或工作中遇到了问题,群里会有一些大神帮忙解答,有时你闷头想一天,不如别人的三言两语就醍醐灌顶,群793544421,也可点击这里,加入我们圈子,共同进步。

我用多线程进一步优化了亿级流量电商业务下的海量数据校对系统,性能再次提升了200%!!(全程干货,建议收藏)(代码片段)

...冰河~~在【精通高并发系列】的《我用多线程优化了亿级流量电商业务下的海量数据校对系统,性能直接提升了200%!!(全程干货,建议收藏)》一文中,我们主要使用了CountDownLatch这个类来优化程序... 查看详情

android—性能优化3—网络优化(代码片段)

...获取线上流量获取方案NetworkStatsManager(线上可以使用这个)Android流量统计TrafficStats类,统计API_8以上重启以来的流量数据统计.前台后台流量获取后台获取流量方案数据 查看详情

我用多线程优化了亿级流量电商业务下的海量数据校对系统,性能直接提升了200%!!(全程干货,建议收藏)(代码片段)

大家好,我是冰河~~最近不少运营同事找到我说:咱们的数据校对系统越来越慢了,要过很久才会显示出校对结果,你能不能快速优化一下呢?我:好的,我先了解下业务啊。注:全程干货,文... 查看详情

我用多线程优化了亿级流量电商业务下的海量数据校对系统,性能直接提升了200%!!(全程干货,建议收藏)(代码片段)

大家好,我是冰河~~最近不少运营同事找到我说:咱们的数据校对系统越来越慢了,要过很久才会显示出校对结果,你能不能快速优化一下呢?我:好的,我先了解下业务啊。注:全程干货,文... 查看详情

7000字前端性能优化总结|干货建议收藏(代码片段)

为什么要做性能优化?性能优化到底有多重要?网站的性能优化对于用户的留存率、转化率有很大的影响,所以对于前端开发来说性能优化能力也是重要的考察点。性能优化的点非常的多,有的小伙伴觉得记起来... 查看详情

聊聊服务器性能优化~(建议收藏)(代码片段)

大家好,我是飘渺。听多了架构优化,数据库优化,今天我们来聊聊服务器优化。我们开发的软件服务需要在服务器上运行,所以服务器性能代表了软件的性能上限,因此服务器性能调优是个十分重要的环节&#... 查看详情

图片加载优化方案(代码片段)

...图片压缩(哈夫曼算法,无损压缩),(ios系统自带,仅供android开发者参考)博客地址:https://bl 查看详情

真正干货!!25条sql语句性能优化,建议收藏!(代码片段)

1对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。2应尽量避免在where子句中对字段进行null值判断,创建表时NULL是默认值,但大多数时候应该使用NOTNULL,或者使用一个特... 查看详情

深入理解快速排序以及优化方式建议收藏(代码片段)

...描淡写。今天我再次重新拿起笔,将快速排序的几大优化,再次一一讲述一遍。各位同学,读完这篇文章,如若对你能 查看详情

mysql高性能优化规范建议,速度收藏(代码片段)

数据库命令规范所有数据库对象名称必须使用小写字母并用下划线分割所有数据库对象名称禁止使用MySQL保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)数据库对象的命名要能做到见名识意,并且最后不... 查看详情

❤️烦恼?头疼?不知所措?android的anr问题,一剂药到病除❤️建议收藏(代码片段)

前言本文对Android中常发生的ANR现象的成因原理及主要发生场景进行了详细介绍,举例了几种典型的ANR场景实例。总结提供了优化改善的若干解决思路。值得Android开发人员收藏简介ANR全称:ApplicationNotResponding,也就是... 查看详情

熬夜爆肝万字c#基础入门大总结建议收藏(代码片段)

往期文章分享点击跳转=>熬夜再战Android从青铜到王者-UI组件快速搭建App界面点击跳转=>熬夜再战Android从青铜到王者-几个适配方案点击跳转=>熬夜再战Android从青铜到王者-开发效率插件篇点击跳转=>Unity粒子特... 查看详情

前端程序猿的天花板?react-native开发及调试方案(真实项目,建议收藏)(代码片段)

...f0c;多少随意。随时都可以把ReactNative无缝集成到你已有的Android或iOS项目,当然也可以完全从头焕然一新地重写。这是目前很好的一款 查看详情

建议收藏15755字,讲透mysql性能优化(包含mysql架构存储引擎调优工具sql索引建议等等)(代码片段)

...几部分:Server层:主要包括连接器、查询缓存、分析器、优化器、执行器等 查看详情

八大排序(万字总结)(详细解析,建议收藏!!!)(代码片段)

...前后指针法非递归快排代码实现图解代码快速排序的两个优化1.三数取中代码实现2.小区间的优化代码实现归并排序递归实现递归图解区间划分要注意(死递归 查看详情

2个大厂100亿级超大流量红包架构方案(代码片段)

文章很长,而且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送经典图书:《Java... 查看详情

程序员收藏必看系列:深度解析mysql优化(代码片段)

程序员收藏必看系列:深度解析MySQL优化(一)性能优化建议下面会从3个不同方面给出一些优化建议。但请等等,还有一句忠告要先送给你:不要听信你看到的关于优化的“绝对真理”,包括本文所讨论的内容,而应该是... 查看详情

❤️《十万字c语言动漫教程》,别用4g看,不然100m流量没了❤️(建议收藏)(代码片段)

零、初章  欢迎大家踊跃评论,优秀的评论更能引起大家的共鸣,评论超过20字,或有内涵,或点赞前十名,都将获得《夜深人静写算法》和《C语言入门100例》的5折优惠券(各一张),三天为限&... 查看详情