Framework 对 Android 开发者们的重要性

最近Android开发秋季校招出现了很激烈的人才争抢情况,看现在大厂给应届生的薪资,很多老开发也是吓了一跳:

众多老开发都惊讶为什么当今应届生都能拿到如此优厚的薪资?**他们在面试中是回答了什么问题可以拿到这般优渥的待遇?**另一条来自应届生的动态或许揭开了答案:

不得不说这个面试官是真的狠辣,对应届生都是手起刀落毫不含糊,直接发起Framework修罗题浪。更让人惊叹的是身为应届生居然顶住了压力,在如此深入的问题下充分展现了自己对Framework的拿捏,后浪的实力真是不容小觑!

为什么面试必问Framework

想要成为高级Android工程师,那么对于底层源码的钻研是必不可少的。在《Android源码与设计模式》一书中作者更是提到:“可以毫不夸张的说,Android的Framework层主要是由WMS、AMS还有View所构成,这三个模块穿插交互在整个framework中,掌握了它们之间的关系和每一个逻辑步骤,你对Framework的了解至少有百分之五十”。由此可见,想要真正的掌握好Framework,AMS和WMS是我们一定要融汇贯通的。

如何理解AMS和WMS

AMS:

AMS-ActivityManagerService是Android系统中及其重要的系统服务,也是上层APP打交道最多的系统服务之一(可以说所有的APP应用都需要与AMS打交道)。

AMS与操作系统中的进程管理和调度模块很像,在Android系统中非常重要,涉及到的知识点也非常多。想要了解Android的内部工作机制,就必须先了解AMS的工作原理。

AMS(ActivityManagerService)贯穿了Android系统组件的核心服务,主要负责Android系统中四大组件的启动、切换、调度以及应用进程管理和调度工作。

(图片来自网络)

比如在Activity的启动流程中,AMS就是组件管理调度中心,看似什么都不做,但但它管的可是真的宽!Android系统从开机到桌面,再到APP启动的完整流程,AMS无所不在……当我们深刻了解Android启动流程与AMS特性之后,就可以解决项目开发中的很多问题,比如:热修复、组件化路由、插件化、leakCanary内存问题分析、Hilt注入、Jetpack原理、Glide原理、launchModel、权限验证、四大组件等相关逻辑和代码……深刻了解之后能帮助Android开发者更加灵活的进行项目开发。

AMS本身是比较复杂的,很多工作多年的Android开发也不太明白AMS的作用:

AMS是如何启动的?

如何理解startActivity的流程?

我们是如何应用AMS的核心原理?

……

我们需要探索的问题还有很多,比如我们在开发中遇到的跳转问题、栈的管理问题、ANR问题等等都是与AMS对四大组件的管理息息相关,只有掌握了AMS,才能更加高效的开发出优质的app。

WMS:

而开发中各种UI显示异常的bug都可以在WMS体系中找到对应的解决办法和对应原理。因为WMS管理着所有的窗口,包括创建、删除和修改,以及将某个窗口设置为焦点窗口。

(图片来自网络)

WMS为所有窗口分配Surface。客户端向WMS添加一个窗口的过程,其实就是WMS为其分配一块Suiface的过程,一块块Surface在WMS的管理下有序的排布在屏幕上。Window的本质就是Surface。

  • 管理Surface的显示顺序、尺寸、位置

  • 管理窗口动画

  • 输入系统相关:WMS是派发系统按键和触摸消息的最佳人选,当接收到一个触摸事件,它需要寻找一个最合适的窗口来处理消息,而WMS是窗口的管理者,系统中所有的窗口状态和信息都在其掌握之中,完成这一工作不在话下。

所以,如果你的定位是做界面开发,那么界面怎么来的?如何显示的?如何布局?如何渲染……要明白这些问题,WMS就是你必须掌握的内容。

我们可以通过下图观看在 Framework 知识点中我们还需要了解那些知识点:

针对上图中所记录的知识点,我从网络上一个个搜索整理了对应的解析,整理出了一份《Android Framework 精编内核解析》。大家可以点击下方小卡片进行参考学习。

猜你喜欢

转载自blog.csdn.net/dongrimaomaoyu/article/details/121339826