相信大家在找工作的时候,肯定或多或少都被面试官问到过安卓的八股文。ActivityManagerService(简称AMS),或者WindowManagerService(WMS) 怎么实现的啊,有些什么细节需要注意啊,View被加入到ViewRoot的流程啊等等。
在我看来,对于应用开发来说,面试考这些纯粹就是扯淡,很有可能面试官自己也只是在网上看看文章,然后照本宣科的再去问面试者。这种现象其实说白了就是卷。因为面试的内容已经在app层挖掘完了,再想提高面试门槛就只能往深了挖。
安卓的系统framework的代码就成了最好的替罪羔羊,因为framework的内容足够多。多到什么程度呢,你下载一套新的AOSP代码可能都要一个小时,全量编译就更不用说了,我自己每次开新的Repo都非常开心,因为我可以心安理得的边看视频边等代码下载了。所以在代码量如此庞大的情况下,面试官想出什么问题都可以,只要你面试者有时间,我总可以问倒你。
那么framework该如何学习来通过面试呢?
最近小编有幸在字节跳动总监手里扒到这份Android framework高级开发笔记,部分知识章节发布到了在知乎上已经收获了1000+的点赞量,今天在这里拿出来分享给大家。
本笔记讲解了Framework的主要模块,从环境的部署到技术的应用,再到项目实战,让我们不仅是学习框架技术的使用,而且可以学习到使用架构如何解决实际的问题,由浅入深,详细解析Framework,让你简单高效学完这块知识!
第一章:深入解析Binder
Binder机制作为进程间通信的一种手段,基本上贯穿了andorid框架层的全部。所以首先必须要搞懂的Android Binder的基本通信机制。
本章知识点
Binder 系列—开篇
Binder Driver 初探
Binder 驱动概述
Binder 核心方法
……
Binder Driver 再探
Binder 通信简述
Binder 通信协议
场景总结
Binder 内存机制
Binder 启动 ServiceManager
启动过程
核心工作
获取 ServiceManager
获取 ProcessState 对象
获取 BpBinder 对象
获取 BpServiceManager
注册服务(addService)
ProcessState
服务注册
Binder Driver
ServiceManager
获取服务(getService)
Framework 层分析
Binder 架构
Binder 类图
Binder 类分层
初始化
注册服务
获取服务
如何使用 Binder
如何使用 AIDL
Binder 总结
Binder 面试题全解析
第二章:深入解析Handler
相信大家都有这样的感受:网上分析 Handler 机制原理的文章那么多, 为啥还要画蛇添足整理这份笔记呢?不是说前人们写的文章不好,我就是觉得他们写的不细, 有些点不讲清楚,逻辑很难通顺的,每次我学个什么东西时遇到这种情况都贼难受。
本章先宏观理论分析与 Message 源码分析,再到MessageQueue 的源码分析,Looper 的源码分析,handler 的源码分析,Handler 机制实现原理总结。最后还整理Handler 所有面试题大全解析。
Handler这章内容很长,但思路是循序渐进的,如果你能坚持读完我相信肯定不会让你失望。
第三章:Dalvik VM 进程系统
Andorid系统启动、init 进程、Zygote、SystemServer启动流程、 应用程序的创建使用,Activity的创建、销毁 Handler和Looper。
第四章 深入解析 WMS
窗口管理框架 系统动画框架 View的工作原理。
第五章 PackagerManagerService
包管理服务。资源管理相关类