频繁的网络请求和网络时常是引发电量的主要原因,每次发送请求都会激活电信号,同样耗电也会对用户产生恶略的影响,甚至卸载。
用户体验
一些网络框架会优化处理内部线程池,但线程池毕竟有限,网络请求过多或请求数据包体大,就会造成网络阻塞,也就是一些用户所谓的卡顿,在弱网方面可能表现更差,所以网络框架的好坏直接影响着整个app的用户体验。
安全
网络安全同样是网络优化中十分重要的一部分,怎样防止被第三方窃听/篡改或冒充,防止运营商劫持,同时又不影响性能,没有安全体系的网络架构同样会对服务端或者客户端造成直接或间接的影响。
网络监控
Network Monitor
Network Monitor Android Studio自带的网络监测工具,可以看出时间段之内的网络请求数量及访问速率。
Charles 抓包工具
本人更习惯于使用 charles 进行网络监控,这可以查看更多的数据指标,查看请求request、response 更加直观。
网络优化
本人觉得网络优化主要从以下几个方面入手:
请求速度
链接成功率
流量消耗
安全策略
网络请求过程:
DNS 解析,请求DNS服务器,获取IP地址
建立连接,包括 tcp 三次握手、安全协议
发送和接收数据,解码数据
优化DNS解析
DNS解析在网路错误中占比较高,使用IP直连方式替代DNS服务器解析,可以减少域名解析几百毫秒的时间消耗。
连接池复用
keep-alive HTTP 协议里有个 keep-alive,HTTP1.1默认开启,一定程度上缓解了每次请求都要进行TCP三次握手建立连接的耗时。原理是请求完成后不立即释放连接,而是放入连接池中,若这时有另一个请求要发出,请求的域名和端口是一样的,就直接拿出连接池中的连接进行发送和接收数据,少了建立连接的耗时。
数据压缩
目前比较成熟的方案未 GZIP 压缩,正常情况下压缩率均值能打包 30-50之间,可以极大的提升传输速度和节省流量,必要是可以使用 Protocol Buffer 替换 JSON 。
弱网优化
弱网优化,在弱网时要是制定合适的超时时间,控制网络并发,合并打包请求,调优TCP参数,使用TCP优化算法。
对服务端的TCP协议参数进行调优,以及开启各种优化算法,使得适合业务特性和移动端网络环境,包括RTO初始值,混合慢启动,TLP,F-RTO等。
针对弱网的这些细致优化暂未成为标准,开源网络库 mars 有实现可以借鉴,若有需要可以使用。
网络安全
采用 Https 双向认证
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
8165277)
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!