AMS主要功能:
ActivityManagerService 简称AMS,AMS是Android中最核心的服务,主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作。还负责启动或杀死应用程序的进程。
功能包括:
- 统一调度所有应用程序的Activity的生命周期
- 启动或杀死应用程序的进程
- 启动并调度Service的生命周期
- 注册BroadcastReceiver,并接收和分发Broadcast
- 启动并发布ContentProvider
- 调度task
- 处理应用程序的Crash
- 查询系统当前运行状态
AMS的工作流程:
AMS的工作流程,其实就是Activity的启动和调度的过程。可以见Activity的启动流程总结。
AMS的设计思想
AMS也用到了设计思想,主要是代理模式。
根据上图我们可以看出,ActivityManagerProxy和ActivityManagerNative都实现了IActivityManager,ActivityManagerProxy就是代理部分,ActivityManagerNative就是实现部分,但ActivityManagerNative是个抽象类,并不处理过多的具体逻辑,大部分具体逻辑是由ActivityManagerService承担,这就是为什么我们说真实部分应该为ActivityManagerService。
WMS主要功能:
负责功能包括:
- 为所有窗口分配Surface。客户端向WMS添加一个窗口的过程,其实就是WMS为其分配一块Surface的过程,一块块Surface在WMS的管理下有序的排布在屏幕上。Window的本质就是Surface。
- 管理Surface的显示顺序、尺寸、位置。
- 管理窗口动画。
- 输入系统相关:WMS是派发系统按键和触摸消息的最佳人选,当接收到一个触摸事件,它需要寻找一个最合适的窗口来处理消息。
WMS工作流程:
1.窗口大小和位置(X轴和Y轴)的计算过程
2.窗口的组织方式
3.输入法窗口的调整过程
4.壁纸窗口的调整过程
5.窗口Z轴位置的计算和调整过程
6.Activity窗口的启动窗口的显示过程
7.Activity窗口的切换过程
8.Activity窗口的动画显示过程
WMS的设计思想:
WMS的设计思想就是利用了桥接模式。
PWS主要功能:
PackageManagerService(简称 PMS),是 Android 系统核心服务之一,处理包管理相关的工作,常见的比如安装、卸载应用等。PMS是系统服务,那么应用层肯定有个PackageManager作为binder call client端来供使用,但是这里要注意,PackageManager是个抽象类,一般使用的是它的实现类:ApplicationPackageManager。因此PackageManager功能的具体实现还是ApplicationPackageManager这个实现类。
负责功能包括:
- 提供一个应用程序的所有信息(ApplicationInfo)
- 提供四大组件的信息
- 查询permission相关信息
- 提供包的信息
- 安装、卸载APK
参考:https://blog.csdn.net/ljx1400052550/article/details/115518631
网友评论