【Android】Android Framework 的那些核心子系统及其功能详解
Android Framework(安卓框架层)是连接应用层与底层 Linux 内核及硬件抽象层(HAL)的核心中间层,其内部按功能划分为多个子系统(Subsystem) 。这些子系统相互协作,为应用提供统一的 API 接口,并管理设备硬件资源、系统服务及应用组件的运行。

核心子系统及其功能详解
以下是 Android Framework 中最核心的子系统,涵盖了从应用组件管理到硬件交互的全流程:
1. Activity Manager 子系统(Activity Manager Subsystem)
核心功能:管理四大组件(Activity、Service、BroadcastReceiver、ContentProvider)的生命周期、进程调度、任务栈(Task Stack)及应用间交互。
核心组件:
ActivityManagerService(AMS):系统核心服务,负责组件生命周期调度、进程优先级管理(OOM 调整)、任务栈维护。ActivityTaskManagerService(ATMS):Android 10 后新增,专注于 Activity 任务栈和窗口容器管理,与 AMS 分工协作。ApplicationThread:应用进程中与 AMS 通信的 Binder 接口,接收 AMS 的调度指令(如启动 Activity)。作用:是应用组件 “生老病死” 的总调度中心,确保组件按规则运行(如 Activity 的onCreate到onDestroy流程),并通过进程优先级管理(如前台进程、后台进程)保证系统资源高效分配。
2. Window Manager 子系统(Window Manager Subsystem)
核心功能:管理所有窗口(Window)的创建、显示、隐藏、层级(Z-Order)及布局,是 UI 渲染的 “容器管理者”。核心组件:
WindowManagerService(WMS):系统服务,负责窗口层级排序、尺寸计算、显示区域分配(如状态栏、导航栏占用空间)。Window:窗口抽象类,每个 Activity、Dialog、Toast 都对应一个 Window,是 View 的载体。Display:管理物理屏幕(如主屏、外接显示器)的显示属性(分辨率、刷新率)。作用:决定 UI 元素在屏幕上的位置和层级(如弹窗显示在 Activity 上方),并与 SurfaceFlinger(底层渲染服务)协作完成窗口绘制。
3. View 系统(View System)
核心功能:提供 UI 组件的抽象、绘制、事件处理机制,是应用界面的 “视觉与交互引擎”。
核心组件:
View:所有 UI 组件的基类(如 Button、TextView),封装了绘制(onDraw)、测量(onMeasure)、布局(onLayout)逻辑。ViewGroup:View 的容器(如 LinearLayout、RecyclerView),负责子 View 的排列和事件分发。Choreographer:同步 UI 绘制与屏幕刷新率(VSync 信号),避免卡顿。InputEventReceiver:接收用户输入事件(触摸、按键)并分发到对应的 View。作用:开发者通过 XML 或代码定义 UI,View 系统负责将其转化为屏幕上的像素,并处理用户交互(如点击、滑动)。
4. Package Manager 子系统(Package Manager Subsystem)
核心功能:管理应用的安装、卸载、信息查询及权限验证,是应用 “身份与权限的管理者”。
核心组件:
PackageManagerService(PMS):系统服务,负责解析 APK 文件(AndroidManifest.xml)、注册组件、管理应用权限、维护应用信息(如版本、签名)。PackageInstaller:处理 APK 安装流程(解压、验证签名、拷贝到 /data/app 目录)。PermissionManagerService(PMS):管理权限请求与授予(如危险权限需用户确认)。作用:确保应用合法安装并在权限范围内运行,开发者通过PackageManager类查询应用信息(如获取已安装应用列表)。
5. 资源管理子系统(Resource Manager Subsystem)
核心功能:统一管理应用的资源(字符串、图片、布局、动画等),并支持多设备适配(如不同分辨率、语言)。
核心组件:
Resources:应用资源的访问入口,提供getString()、getDrawable()等方法。AssetManager:加载 APK 中的原始资源(assets 目录)和资源索引表(resources.arsc)。ResourceManagerService(RMS):系统服务,管理系统资源(如 framework-res.apk 中的主题、样式)。作用:通过资源限定符(如drawable-xxhdpi、values-zh)自动匹配设备环境,简化多设备适配开发。
6. 通知与状态栏子系统(Notification & Status Bar Subsystem)
核心功能:管理通知的展示、交互及状态栏(Status Bar)、通知栏(Notification Shade)的控制。
核心组件:
NotificationManagerService(NMS):系统服务,处理通知的创建、更新、删除,控制通知显示规则(如静音、优先级)。StatusBarManagerService(SBS):管理状态栏图标(如电量、信号)和通知栏的展开 / 收起。NotificationChannel:Android 8.0 后新增,对通知进行分类管理(用户可单独控制每个渠道的通知权限)。作用:让应用在后台时能向用户传递信息(如短信、推送),同时通过状态栏展示设备状态(时间、电量)。
7. Telephony 子系统(Telephony Subsystem)
核心功能:处理电话通信(语音、短信)、移动网络(4G/5G)及 SIM 卡管理。
核心组件:
TelephonyManager:应用层 API,提供电话状态查询(如信号强度)、拨打电话、发送短信等功能。TelephonyRegistry:管理电话状态监听(如来电、网络切换)。PhoneInterfaceManager:与底层调制解调器(Modem)通信的中间层,处理通话建立、短信收发等底层操作。作用:实现设备的通信能力,是电话、短信、移动数据功能的核心支撑。
8. 多媒体子系统(Media Framework)
核心功能:支持音频、视频的播放、录制,以及相机(Camera)、麦克风等多媒体硬件的控制。
核心组件:
MediaPlayer/MediaRecorder:应用层 API,用于音频 / 视频的播放与录制。MediaCodec:硬件编解码接口,通过 HAL 层调用 GPU 或专用编解码芯片,提升多媒体处理效率。CameraService:管理相机硬件,协调多个应用对相机的访问(如前后置摄像头切换)。AudioManager/AudioService:管理音频设备(扬声器、耳机)、音量调节、音频焦点(如音乐播放时来电暂停)。作用:为应用提供丰富的多媒体能力,如拍摄照片、播放视频、录音等。
9. 位置服务子系统(Location Manager Subsystem)
核心功能:整合 GPS、网络(基站 / Wi-Fi)、蓝牙等定位源,提供设备位置信息。
核心组件:
LocationManager:应用层 API,用于请求位置更新(如requestLocationUpdates)。LocationManagerService(LMS):系统服务,管理定位 providers(如 GPS Provider、Network Provider),融合多源定位数据。FusedLocationProvider:Google Play 服务提供的融合定位服务,优化定位精度和功耗。作用:支持地图导航、本地服务推荐等依赖位置的应用场景。
10. 电源管理子系统(Power Manager Subsystem)
核心功能:管理设备的电源状态(如休眠、唤醒),优化功耗(延长续航)。
核心组件:
PowerManager:应用层 API,用于唤醒屏幕(WakeLock)、设置屏幕亮度等。PowerManagerService(PMS):系统服务,监控设备活动(如用户操作、传感器事件),决定何时进入休眠(Doze 模式)或唤醒。BatteryService:监控电池状态(电量、充电状态),触发低电量提醒。作用:在性能与功耗间平衡,确保设备在闲置时进入低功耗状态,有操作时快速响应。
11. 输入子系统(Input Manager Subsystem)
核心功能:接收并分发用户输入事件(触摸、按键、手势、鼠标等)。
核心组件:
InputManagerService(IMS):系统服务,从 Linux 内核(如/dev/input设备)接收原始输入事件,进行加工(如触摸坐标转换)后分发。WindowInputEventReceiver:每个窗口的事件接收器,将事件传递给 View 系统处理(如onTouchEvent)。InputFilter:对输入事件进行过滤(如键盘按键映射、手势识别)。作用:是用户与设备交互的 “桥梁”,确保触摸、按键等操作准确传递到对应的 UI 组件。
12. 安全子系统(Security Subsystem)
核心功能:保障系统和应用的安全性,包括权限控制、应用签名、数据加密等。
核心组件:
PackageManagerService(权限管理部分):验证应用签名,管控权限授予(如危险权限需用户确认)。KeyStoreService:管理加密密钥(如应用签名密钥、用户密码哈希),提供安全存储。SELinux(Security-Enhanced Linux):基于 Linux 的强制访问控制(MAC)机制,限制进程权限(如应用无法直接访问系统文件)。作用:防止恶意应用越权操作(如窃取隐私数据),保护系统和用户数据安全。
其他重要子系统
- 数据库子系统(SQLite) :基于 SQLite 引擎,提供轻量级本地数据库支持(
SQLiteDatabase类),用于应用本地数据存储。 - 网络子系统(Network Subsystem) :封装 TCP/IP、HTTP/HTTPS 等网络协议,提供
HttpClient(旧)、HttpURLConnection、OkHttp(第三方但广泛使用)等 API,支持网络请求。 - 传感器子系统(Sensor Manager Subsystem) :通过
SensorManager管理硬件传感器(加速度计、陀螺仪、光线传感器等),提供传感器数据采集能力(如计步、屏幕亮度自动调节)。 - 蓝牙 / WLAN 子系统:分别管理蓝牙(
BluetoothManager)和 Wi-Fi(WifiManager)的连接、扫描、数据传输,支持短距离无线通信。
子系统的协作关系
Android Framework 的子系统并非孤立存在,而是通过Binder 进程间通信和系统服务相互协作:
- 例如:用户点击应用图标 →
Launcher(应用)通过ActivityManager请求启动 Activity → AMS(Activity Manager 子系统)决定启动进程并调度 Activity 生命周期 → WMS(Window Manager 子系统)为 Activity 分配窗口 → View 系统绘制 UI → 输入子系统处理后续用户交互。
这些子系统共同构成了 Android 的 “骨架”,既为开发者提供了简单易用的 API,又隐藏了底层硬件和系统细节,使应用开发更高效。理解子系统的功能和交互,是深入掌握 Android 原理的关键。
