Android开发高手课
张绍文
前微信高级工程师,Tinker负责人
立即订阅
12609 人已学习
课程目录
已完结 61 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 焦虑的移动开发者该如何破局?
免费
导读 (1讲)
导读 | 如何打造高质量的应用?
模块一 高质量开发 (25讲)
01 | 崩溃优化(上):关于“崩溃”那些事儿
02 | 崩溃优化(下):应用崩溃了,你应该如何去分析?
03 | 内存优化(上):4GB内存时代,再谈内存优化
04 | 内存优化(下):内存优化这件事,应该从哪里着手?
05 | 卡顿优化(上):你要掌握的卡顿分析方法
06 | 卡顿优化(下):如何监控应用卡顿?
06补充篇 | 卡顿优化:卡顿现场与卡顿分析
07 | 启动优化(上):从启动过程看启动速度优化
08 | 启动优化(下):优化启动速度的进阶方法
09 | I/O优化(上):开发工程师必备的I/O优化知识
10 | I/O优化(中):不同I/O方式的使用场景是什么?
11 | I/O优化(下):如何监控线上I/O操作?
12 | 存储优化(上):常见的数据存储方法有哪些?
13 | 存储优化(中):如何优化数据存储?
14 | 存储优化(下):数据库SQLite的使用和优化
15 | 网络优化(上):移动开发工程师必备的网络优化知识
16 | 网络优化(中):复杂多变的移动网络该如何优化?
17 | 网络优化(下):大数据下网络该如何监控?
18 | 耗电优化(上):从电量优化的演进看耗电分析
19 | 耗电优化(下):耗电的优化方法与线上监控
20 | UI 优化(上):UI 渲染的几个关键概念
21 | UI 优化(下):如何优化 UI 渲染?
22 | 包体积优化(上):如何减少安装包大小?
23 | 包体积优化(下):资源优化的进阶实践
24 | 想成为Android高手,你需要先搞定这三个问题
模块二 高效开发 (9讲)
25 | 如何提升组织与个人的研发效能?
26 | 关于编译,你需要了解什么?
27 | 编译插桩的三种方法:AspectJ、ASM、ReDex
28 | 大数据与AI,如何高效地测试?
29 | 从每月到每天,如何给版本发布提速?
30 | 数据评估(上):如何实现高可用的上报组件?
31 | 数据评估(下):什么是大数据平台?
32 | 线上疑难问题该如何排查和跟踪?
33 | 做一名有高度的移动开发工程师
模块三 架构演进 (9讲)
34 | 聊聊重构:优秀的架构都是演进而来的
35 | Native Hook 技术,天使还是魔鬼?
36 | 跨平台开发的现状与应用
37 | 移动开发新大陆:工作三年半,移动开发转型手游开发
38 | 移动开发新大陆:Android音视频开发
39 | 移动开发新大陆: 边缘智能计算的趋势
40 | 动态化实践,如何选择适合自己的方案?
41 | 聊聊Flutter,面对层出不穷的新技术该如何跟进?
42 | Android开发高手课学习心得
练习Sample跑起来 (8讲)
练习Sample跑起来 | 热点问题答疑第1期
练习Sample跑起来 | 热点问题答疑第2期
练习Sample跑起来 | 热点问题答疑第3期
练习Sample跑起来 | 热点问题答疑第4期
练习Sample跑起来 | ASM插桩强化练习
练习Sample跑起来 | 唯鹿同学的练习手记 第1辑
练习Sample跑起来 | 唯鹿同学的练习手记 第2辑
练习Sample跑起来 | 唯鹿同学的练习手记 第3辑
特别放送 (7讲)
Android JVM TI机制详解(内含福利彩蛋)
专栏学得苦?可能是方法没找对
专栏学得苦?可能你还需要一份配套学习书单
Native下如何获取调用栈?
聊聊Framework的学习方法
Android工程师的“面试指南”
程序员修炼之路 | 设计能力的提升途径
结束语 (1讲)
结束语 | 移动开发的今天和明天
Android开发高手课
登录|注册

16 | 网络优化(中):复杂多变的移动网络该如何优化?

张绍文 2019-01-22
在 PC 互联网时代,网络优化已经是一项非常复杂的工作。对于移动网络来说,弱网络、网络切换、网络劫持这些问题更加突出,网络优化这项工作也变得更加艰巨。
那作为一名移动开发者,面对复杂多变的移动网络我们该如何去优化呢?可能也有人会说,我只要用好 AFNetworking/OkHttp 这些成熟网络库就可以了,并不需要额外去做什么优化。那你确定你真的能用好这些网络库吗?它们内部是怎样实现的、有哪些差异点、哪个网络库更好呢?
虽然我们可能只是客户端 App 开发人员,但在关于网络优化还是可以做很多事情的,很多大型的应用也做了很多的实践。今天我们一起来看一下,如何让我们的应用在各种的网络条件下都能“快人一步”。

移动端优化

回想上一期我给出的网络架构图,一个数据包从手机出发要经过无线网络、核心网络以及外部网络(互联网),才能到达我们的服务器。那整个网络请求的速度会跟哪些因素有关呢?
从上面这张图上看,客户端网络库实现、服务器性能以及网络链路的质量都是影响网络请求速度的因素。下面我们先从客户端的网络库说过,看看应该如何进行网络优化。
1. 何为网络优化
在讲怎么去优化网络之前,我想先明确一下所谓的网络优化,究竟指的是什么?在我看来,核心内容有以下三个:
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Android开发高手课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(11)

  • 坚持远方
    一直用的是okhttp,中间尝试过protobuf,但是因为使用起来比价复杂,后来放弃了,而对于加密这部分用的是https,对于作者提到的另外两个库基本上是闻所未闻,感觉对于作者的每一篇文章都能够拓宽我的视野
    2019-01-24
    8
  • 辉 哥
    眼界大开,mars一开源我就关注了,当时不知道mars作为网络请求库的优势,如今看了,受益匪浅
    2019-01-26
    2
  • A阿进 Andy
    okhttp是有长连接的吧?它有WebSocket是长连接吧?

    作者回复: Okhttp有keep alive,但是没有长连吧,这里的长连指的是有发心跳包的

    2019-03-16
    1
  • 小美

    张老师想请教两个问题:
    1.真链接复用是怎么实现的,为什么在网络切换时候不用重连
    2.newDns 是如何防重放

    作者回复: 1. udp 通过类似connection id,是它的特性
    2. 有几种,一个我们可以拒绝非私有域名的请求。如果要支持所有的域名的请求,那就是业界比较常见的时间戳+nonce,网上资料比较多

    2019-02-09
    1
  • ww
    太棒了!现在公司就在用okhttp,可以尝试拓宽视野,看看MARS!

    作者回复: 可以学习一下,但是mars并不是一个完整的网络库

    2019-01-22
    1
  • 放个屁臭到了自己
    何时才能像绍文大大那样
    2019-09-10
  • breeze
    百度那个HTTPDNS方案太简单了,都是基于OKHttp的,OKhttp提供的DNS接口很容易实现httpdns,但是很多应用网络请求不止是用Okhttp,还有webview 的网络请求情况,不知道老师有没有好的针对全局的Httpdns方案,谢谢啦
    2019-06-28
    1
  • Jerry银银
    不说技术,只说感受:读完了这篇,才知道自己所知是沧海一粟。高手是深厚的知识功底加丰富的实战经验,二者缺一不可
    2019-05-07
  • Dimple
    老师给出的每个链接参考价值都巨大,学了高手课,感觉不仅仅是Android能力有提升,整体的都会有一个质的飞跃
    2019-04-23
  • QuincySx
    一直在想为什么大家不用 Ecc 证书,原来这已经是大厂的常规用法,学习了

    作者回复: 成本压力大啊

    2019-01-22
  • scofield
    很好的拓宽视野!
    2019-01-22
收起评论
11
返回
顶部