这份字节跳动总监的Framework开发笔记在知乎上火了!
想要成为一名优秀的Android开发,就需要有一个完备的知识体系,Android Framework 的知识是很重要的一个组成部分,他广泛的应用在各个领域。
像掉帧监控,函数插装,慢函数检测,ANR 监控,启动监控,都需要对 Framework 有比较深入的了解。只有这样才能知道怎么去做监控,利用什么机制去监控,函数插桩插到哪里,反射调用该反射哪个类哪个方法哪个属性……
另外 Framework 作为 Android 框架层,为 App 提供了众多 API 去调用 ,但是很多机制都是 Framework 包装好了给 App 来用的,如果不知道这些机制的原理,那么很难去在这基础上做优化。
如果你了解 Android App 的启动机制,优化启动速度的时候会更得心应手:
定制什么样的 StartingWindow;
什么时候可以拿到图片的宽高;
DelayLoad 怎么做才会更合适;
Service 什么时候启动可以不影响启动速度;
Activity onResume 回调的时候真的可见了么?
Redex 为什么会加快应用启动速度?
再比如我们经常说的 Handler,MessageQueue,Looper。看源码你就可以更好的理解那些概念:ThreadLocal 做什么的;Thread 和 Handler 的关系;为什么不能在子线程更新 UI?
还有很多栗子,这里就不一一论述学习Android Framework的重要性了。
Framework 的重要性不容置疑,那我们该如何学习呢?
关于如何学习Android Framework开发知识,最近小编有幸在字节跳动总监手里扒到这份Android framework高级开发笔记,部分知识章节发布到了在知乎上已经收获了1000+的点赞量,今天在这里拿出来分享给大家。
本笔记主要讲解了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
包管理服务。资源管理相关类
由于篇幅原因,这份纯手写笔记已经被整理成了PDF文档,有需要AndroidFramework开发笔记完整文档的朋友可以扫描下方二维码找我领取!