前言
在 Android 开发者技能中,如果想进大厂,一般拥有较好的学历可能有优势一些。但是如果你靠硬实力也是有机会的,例如死磕Framework。Framework 知识广泛应用在Android各个领域中,重要性显而易见。
成为一名Android Framework高手,也是目前招聘过程中非常稀缺的人才,可以成为你的敲门砖。
Framework就像一棵常青的技能树,不管是普通开发还是首席架构、CTO 都能够从中汲取足够的技术养料。普通开发往往对Framework只停留在“使用过”甚至是“听说过”的阶段,这其中甚至不乏一些工作 5 年以上的 Android 工程师,而对于技术骨干、架构师则往往需要对底层原理源码吃透。说白了,知道怎么用是一方面,知道为什么则是更为稀缺的能力。
Framework始终穿插在 App 整个研发生命周期中,不管是从 0 到 1 的建立阶段,还是从 1 到 N 打磨阶段,都离不开Framework。
当然如果想要精通Framework,不仅要对底层原理充分了解,还要知道如何利用Framework知识指导我们代码实践开发,除了Handler、Binder之外,还有Android App 的启动机制、AMS、PMS、WMS等…
这样才能够真正说得上是精通Framwork。
精通意味着:
- 首先在大厂面试环节,Framework是必问项,你可以展示出个人实力;
- 一旦你进入大厂,对Framework了解越多,你能够做的事情就越多,产出也会越多,而且可以持续不断的去做。
我在面试的时候也经常看到一些朋友写“精通Framwork”,但经常有人遭遇滑铁卢!大厂面试提问的细腻程度达到“令人发指”的程度让很多Android开发者直接懵逼了,大多数人往往沉湎于知识点的累积和记忆,对其原理和源码知之甚少,遇到面试官抛出的相关考题很难进行多元解答和灵活应变。
如何学习Framework
关于如何学习Android Framework开发知识,可以参考这份由字节大佬总结的《Android Framework 开发揭秘》,其中部分章节在某平台收藏达到1000+!今天在这里分享给大家。
《Android Framework核心知识点学习手册》
第一章、深入解析Binder
Binder作为Android系统提供的一种IPC机制,无论从事系统开发还是应用开发,都应该有所了解,这是 Android系统中最重要的组成,也是最难理解的一块知识点,错综复杂。要深入了解 Binder 机制,最好的方法便是阅读源码,借用Linux 鼻祖 Linus Torvalds 曾说过的一句话:Read The Fucking Source Code.
第二章、深入解析Handler消息机制
本文所分析的内容大概有以下几个模块:
●开发人员最初设计Handler时想要解决什么问题
●Handler为我们提供了哪些功能以及如何使用
●Handler实现原理的理论分析
●Handler实现原理的源码分析
●Android Ul线程中 Handler的特殊操作
第三章、Dalvik VM进程系统
Andorid系统启动、init 进程、Zygote、SystemServer启动流程、 应用程序的创建使用,Activity的创建、销毁 Handler和Looper。
第四章、深入解析 WMS
WMS是系统的其他服务,无论对于应用开发还是Framework开发都是重点知识它的职责有很多,主要有以下几点:
1.窗口管理
●WMS是窗口的管理者,它负责窗口的启动、添加和删除,另外窗口的大小也和层级也是由WMS管理的。窗口管理的核心成员有:DisplayContent、WindowToken和WindowState。
2.窗口动画
●窗口间进行切换时,使用窗口动画可以显得更炫酷一些,窗口动画由WMS的动画子系统来负责,动画子系统的管理员为:WindowAnimator
3.输入系统的中转站
●通过窗口的接触从而产生触摸事件,InputManagerService(IMS)会对触摸事件进行处理,它会寻找一个最合适的窗口来处理触摸反馈信息,WMS是窗口的管理者,因此,WMS理所应当的成为了输入系统的中转站。
4.Surface管理
●窗口并不具备有绘制的功能,因此每个窗口都需要一块Surface来供自己绘制。为每个窗口分配Surface是由WMS来完成的