频道栏目
首页 > 资讯 > Android > 正文

Android开发下的网络优化初学

18-07-30        来源:[db:作者]  
收藏   我要投稿

工具

profile查看网络请求

debug log看报文

charles看报文、mock

url

httpdns

直接使用url

网络协议

可以考虑摒弃http,仅使用tcp,原因有3点

1.http无法优化弱网

2.http需要dns解析

3.网络连接,发送请求,接受响应在http上的定制性优化不方便

连接维护

有两个概念:

1.piping同时发送多请求

2.mutiplexing二进制分帧可以乱序接受

可以考虑摒弃这两点,用最简单的FIFO。

维护若干连接,还可以同时处理一个大请求,如果连接全部在使用中,才开启一个临时连接。

弱网、网络抖动

维护连接数降到1

动态调整connection、write、read超时时间

网络类型切换,连接会失效(ip port ip port是对应的),关闭所有连接,开启新的连接,同时对任务进行重试

数据格式

protobuf

重试机制

如果失败,不再用原有连接,而是开启临时连接,对于建立连接、序列化报文、发送请求3个阶段进行重试(不会产生幂等问题,只要监控好确保请求没有发出去)

应用层4大策略

1.打包请求

2.预加载

3.任务分优先级

(低优先级:比如点赞,因为用户可能不断点赞、取消赞,所以先UI展示,等退出页面后再发请求;

高优先级:请求数据更新UI)

4.错峰(打包是对的,但是100个请求一起发就不好了,因为大部分的网络请求是缓存线程池,只有非核心线程,如果100个加进来,会短时间创建100个线程,其后果可以想象)

压缩报文

http可以压缩header

body可以用gzip压缩

图片传输

webp

做好缓存工作

http1.0强制 服务器给服务器上的到期时间

对比 给资源的最后修改时间

http2.0强制 服务器给到期时间段

对比 给资源的唯一标识

监听WIFI、充电

用JobSchedule监听WIFI、充电,做一些费电、费网的操作,这个时候可以下载大量数据啊,也可以post用户埋点信息啊。。。

相关TAG标签
上一篇:Android开发之 Toast 显示提示信息讲解
下一篇:Android顶部三个TabLayout,滑动到某条目之后就会切换到相应的TabLayout(代码实现)
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站