AMS和WMS
AMS
ActivityManagerService是Android系统中一个特别重要的系统服务,也是上层APP打交道最多的系统服务之一(几乎所有的APP应用都需要与AMS打交道)。
AMS与操作系统中的进程管理和调度模块很像,在Android系统中非常重要,涉及到的知识点也非常多。想要了解Android的内部工作机制,就必须先了解AMS的工作原理。
AMS(ActivityManagerService)贯穿了Android系统组件的核心服务,主要负责Android系统中四大组件的启动、切换、调度以及应用进程管理和调度工作。
比如在Activity的启动流程中,AMS就是组件管理调度中心,什么都不干,但什么都管!Android系统从开机到桌面,再到APP启动的完整流程,AMS无所不在……
当我们深刻了解Android启动流程与AMS特性之后,就可以解决项目开发中的很多问题,比如:
屏幕适配、自定义View和ViewGroup、APK加固、热修复、组件化路由、皮肤换肤、插件化、leakCanary内存问题分析、Hilt注入、Jetpack原理、Glide原理、RXJava原理、launchModel、权限验证、四大组件等相关逻辑和代码……
深刻了解之后能帮助Android开发者更加灵活的进行项目开发。
AMS本身是比较复杂的,很多工作多年的Android开发也不太明白AMS的作用。
- AMS是如何启动的?
- 如何理解startActivity的流程?
- 我们是如何应用AMS的核心原理?
- ……
我们需要探索的问题还有很多,比如我们在开发中遇到的跳转问题、栈的管理问题、ANR问题等等都是与AMS对四大组件的管理息息相关,只有掌握了AMS,才能更加高效的开发出优质的app。
WMS
而开发中各种UI显示异常的bug都可以在WMS体系中找到对应的解决办法和对应原理。因为WMS管理着所有的窗口,包括创建、删除和修改,以及将某个窗口设置为焦点窗口。
WMS 的作用
WMS为所有窗口分配Surface。客户端向WMS添加一个窗口的过程,其实就是WMS为其分配一块Suiface的过程,一块块Surface在WMS的管理下有序的排布在屏幕上。Window的本质就是Surface。
管理Surface的显示顺序、尺寸、位置
管理窗口动画
输入系统相关:WMS是派发系统按键和触摸消息的最佳人选,当接收到一个触摸事件,它需要寻找一个最合适的窗口来处理消息,而WMS是窗口的管理者,系统中所有的窗口状态和信息都在其掌握之中,完成这一工作不在话下。
所以,如果你的定位是做界面开发,那么界面怎么来的?如何显示的?如何布局?如何渲染……要明白这些问题,WMS就是你必须掌握的内容。
为了帮助到大家更好的了解Android Framework框架中的所有知识点,这边查阅大量的素材,整理出了这 《Android Framework 核心知识点手册》,里面记录了:有Handler、Binder、AMS、WMS、PMS、事件分发机制、UI绘制……等等,几乎把更Framework相关的知识点全都记录在册了
《Android Framework学习手册》:https://qr18.cn/AQpN4J
- 开机Init 进程
- 开机启动 Zygote 进程
- 开机启动 SystemServer 进程
- Binder 驱动
- AMS 的启动过程
- PMS 的启动过程
- Launcher 的启动过程
- Android 四大组件
- Android 系统服务 - Input 事件的分发过程
- Android 底层渲染 - 屏幕刷新机制源码分析
- Android 源码分析实战