不服不行!终于有人把AMS和WMS讲明白了!

Posted BUGgogogo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不服不行!终于有人把AMS和WMS讲明白了!相关的知识,希望对你有一定的参考价值。

现在的移动开发人才市场上,初中级开发者几乎都是人满为患,互联网公司对移动开发人员的招聘要求也越来越高,尤其是那些大厂,非常看重开发者对底层的掌握。

大家可以先来看一组大厂的面试题:

  • AMS是如何启动的?

  • AMS在android起到什么作用?

  • AMS有哪些应用场景?我们是如何应用AMS核心原理的?

  • WMS的工作原理说说?

这些底层问题能回答上来吗?是不是有一定难度?

其实很多的移动开发者都止步于这个水平,要想再进一步深入发展很难,进阶学习成为了一个迫在眉睫又进展艰难的点。

进阶学习难吗?有一定难度。工作和学习遇到瓶颈后我们需要钻研底层原理,而现在我们基本上都是上班怼业务业务代码,晚上经常性加班赶任务进度,回到家已经很累了,很少有时间去提升自己的技术。钻研底层原理对我们来说相当奢侈。

钻研底层就离不开源码,而《Android源码与设计模式》一书的作者说:“可以毫不夸张的说,Android的framework层主要是由WMS、AMS还有View所构成,这三个模块穿插交互在整个framework中,掌握了它们之间的关系和每一个逻辑步骤,你对framework的了解至少有百分之五十”。

今天终于有人把AMS和WMS讲明白了!不服不行!

AMS和WMS

AMS

ActivityManagerService是Android系统中一个特别重要的系统服务,也是上层APP打交道最多的系统服务之一(几乎所有的APP应用都需要与AMS打交道)。

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

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

▲ Activity启动流程图

比如在Activity的启动流程中,AMS就是组件管理调度中心,什么都不干,但什么都管!Android系统从开机到桌面,再到APP启动的完整流程,AMS无所不在……

当我们深刻了解Android启动流程与AMS特性之后,就可以解决项目开发中的很多问题,比如:

屏幕适配、自定义View和ViewGroup、APK加固、热修复、组件化路由、皮肤换肤、插件化、leakCanary内存问题分析、Hilt注入、Jetpack原理、Glide原理、RXJava原理、launchModel、权限验证、四大组件等相关逻辑和代码……

深刻了解之后能帮助Android开发者更加灵活的进行项目开发。

▲ AMS主要类关系图

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

  • AMS是如何启动的?

  • 如何理解startActivity的流程?

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

  • ……

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

WMS

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

▲ WMS主要类关系图

WMS的作用

WMS为所有窗口分配Surface。客户端向WMS添加一个窗口的过程,其实就是WMS为其分配一块Suiface的过程,一块块Surface在WMS的管理下有序的排布在屏幕上。Window的本质就是Surface。
管理Surface的显示顺序、尺寸、位置
管理窗口动画
输入系统相关:WMS是派发系统按键和触摸消息的最佳人选,当接收到一个触摸事件,它需要寻找一个最合适的窗口来处理消息,而WMS是窗口的管理者,系统中所有的窗口状态和信息都在其掌握之中,完成这一工作不在话下。

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

此处一文实在难以详尽,剩下的部分以文档的形式整理成了PDF,有需要的朋友直接【点击此处】进去自己下载。

除了除了AMS和WMS,这个资料还包含了Framework层的其他源码解析,本资料一共452页,希望对大家有帮助。

希望这份《Android Framework精编内核解析》手册对大家的学习和工作有所帮助。

以上是关于不服不行!终于有人把AMS和WMS讲明白了!的主要内容,如果未能解决你的问题,请参考以下文章

终于有人把如何精通C++讲明白了!

终于有人把算法和数据结构讲明白了!

终于有人把搜索引擎讲明白了

终于有人把Scrapy爬虫框架讲明白了

强烈推荐所有人!这份“保姆级”的Netty最强宝典你不服不行!

终于有人把排序算法讲明白了