做了这么久Framework 底层相关的工作,也接触了不少模块,说实话,要做好底层这一块,真心不容易。
为什么这么说?
举个例子,比如你了解了 Handler的源码结构,你就可以更好的理解那些概念:
- 为什么不能在子线程更新 UI?
- 主线程为什么循环却不会卡死?
- Thread 和 Handler 的关系
- ThreadLocal 做什么的?
- ContentProvider、Broadcast、Service 是怎么利用 Message 监控 ANR 的?
再比如进程通信Binder
Binder 是 Android 中主要的跨进程通信方式,Binder 包括 BinderProxy、BpBinder 等各种Binder 实体,以及对 Binder 驱动操作的 ProcessState、IPCThreadState 封装,整体贯穿 Java、Native 层,涉及用户态、内核态,往上可以说到 Service、AIDL 等,往下可以说到 mmap、Binder 驱动设备,是相当庞大、繁琐的一个机制。
真想把Binder 原理机制等的知识点从头到尾了解清楚,不是那边一两天就能完成的事。
Framework始终穿插在 App 整个研发生命周期中,不管是从 0 到 1 的建立阶段,还是从 1 到 N 打磨阶段,都离不开Framework。
作为过来人,