当前位置: 首页 > news >正文

【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 的onCreateonDestroy流程),并通过进程优先级管理(如前台进程、后台进程)保证系统资源高效分配。
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-xxhdpivalues-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(旧)、HttpURLConnectionOkHttp(第三方但广泛使用)等 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 原理的关键。

http://www.dtcms.com/a/544389.html

相关文章:

  • Android车载多媒体开发MediaSession框架理解
  • 掌握Axios:前端HTTP请求全攻略
  • 产业链、技术与政策:智能网联新能源汽车的“十五五”蓝图
  • 20251029让AIO-3576Q38开发板适配Rockchip的原厂Android14之后配置为禁止锁屏
  • 解析视频融合平台EasyCVR如何以跨平台与兼容性技术重构安防融合中台
  • SQlite:外键约束
  • linux命令-网络工具-3
  • Android 通信机制简析
  • C++ 虚函数的使用开销以及替代方案
  • 椒江网站建设百度手机助手app安卓版官方下载
  • 柯桥做网站的公司怎么查网站是用什么语言做的
  • Unity功能篇:UI和模型高亮
  • Rust | 不只是 async:Actix-web 请求生命周期与 Actor 模型的并发艺术
  • 如何选择专业网站开发商丰台建站推广
  • Kotlin List扩展函数使用指南
  • 重组蛋白与传统蛋白的区别:从来源到特性的全面解析
  • Ubuntu24.04 最小化发布 需要删除的内容
  • 深入理解 Rust 的 LinkedList:双向链表的实践与思考
  • 将一个List分页返回的操作方式
  • 使用Storage Transfer Service 事件驱动型 — 将AWS S3迁移到 GCP Cloud Storage
  • 苏州外贸网站建设赣州网上银行登录
  • Blender动画笔记
  • python学习之正则表达式
  • SCRM平台对比推荐:以企业微信私域运营需求为核心的参考
  • 廊坊网站搭建别墅装修案例
  • select/poll/epoll
  • VTK开发笔记(八):示例Cone5,交互器的实现方式,在Qt窗口中详解复现对应的Demo
  • k8s——资源管理
  • 【QML】001、QML与Qt Quick简介
  • 从0到1学习Qt -- 信号和槽(一)