Android Framework 学习笔记

2019-07-13 04:53发布

一、Android 系统结构

  • Linux 系统内核
操作系统,直接和硬件交互,包含所有硬件驱动。负责进程管理、内存管理、安全性、网络协议栈等。Linux内核也同时作为硬件和软件栈之间的抽象层。
  • 本地函数库
本层包含一些C/C++函数库,供上层使用:
  1. libc(系统C函数库):专门为嵌入式Linux设备定制的。
  2. 媒体库:音视频录制和播放,图片的拍摄和展示。
  3. Surface Manager :显示管理,界面渲染相关。
  4. WebKit :web浏览器相关
  5. SGL :底层的2D图形引擎
  6. OpenGL|ES :3D图形相关
  7. FreeTpye :位图和矢量字体显示
  8. SQLite :轻量数据库
  • Android 运行时
Java语言的核心函数库,供上层使用。 谷歌优化了Java虚拟机。每个程序都拥有一个虚拟机实例。
  • 应用框架
为应用层的开发者提供API,实际上是一个应用程序的框架。
  • 应用
包括系统自带的应用和后安装的应用。

二、Framework 详情

  1. SystemServer 是 Framework 中非常重要的一个进程,它是在虚拟机启动后运行的第一个 Java 进程。SystemServer 启动各个系统服务,这些系统服务都是以一个线程的方式存在于 SystemServer 进程中。
① ActivityManagerService 最核心的服务之一,管理 Activity。 ② WindowManagerService 最核心的服务之一,负责窗口管理。 ③ PackageMangerService 程序包管理服务。 ④ LocationManagerService 位置管理服务。 ⑤ NotificationMangerService 通知栏管理服务。 ⑥ StatusBarManagerService 状态栏管理服务。 ⑦ LightsService 光强度感应器服务。 ⑧ AccountManagerService 账号管理服务。 ⑨ ContentService ContentProvider 跨进程数据交换。 ⑩ EntropyService 提供伪随机数。 ⑪ TelephonyRegistry 通过该模块注册电话模块的事件响应,比如重启、关闭、启动等。 ⑫ BatteryService 电池管理服务。 ⑬ PowerManagerService 电源管理服务。 ⑭ VibratorService 震动器服务。 ⑮ AlarmManagerService 定时器管理服务,提供定时提醒服务。 ⑯ BluetoothService 蓝牙服务。 ⑰ DevicePolicyMangerService 提供一些系统级别的设置和属性。 ⑱ ClipBoardService 系统剪切板服务。 ⑲ InputMethodManagerService 输入法管理服务。 ⑳ NetStatService 网络状态服务。 ㉑ NetworkManagmentService 网络管理服务。 ㉒ ConnectivityService 网络连接管理服务。 ㉓ Accessibility 辅助管理程序截获所有的用户输入,并根据这些输入给用户一些额外的反馈,起到辅助的效果。 ㉔ MountService 挂载服务,可通过该服务调用 Linux 层面的 mount 程序。 ㉕ DeviceStorageManagerService 磁盘空间状态检测服务。 ㉖ SearchMangerService 搜素管理服务。 ㉗ DropBoxMangerService 通过该服务访问 Linux 层面的 DropBox 程序。 ㉘ WallpaperManagerService 墙纸管理服务,不同于桌面壁纸,在 View 系统内部,墙纸可以作为任何窗口的背景。 ㉙ AudioService 音频管理服务。 ㉚ BackupManagerService 系统备份服务。 ㉛ AppWidgetService 系统桌面小控件服务。 ㉜ RecognitionManagerService 身份识别服务。 ㉝ DiskStatsService 磁盘统计服务。 除此之外还有 NFC、Download 等服务。

三、核心服务简介

  • ActivityManagerService
应用进程的管理服务端,主要工作是对应用进程及其进程中的四大组件进行管理,保证了系统不同的应用程序之间能够和谐的合理的进行调度运行。(也涉及了一些 Window 、电源、权限等内容) 对进程的管理:进程的创建、销毁、进程的优先级调整。 对组件的管理:Activity 的调度管理、Service的管理、Broadcast的分发、ContentProvider的管理。
  • WindowManagerService
对系统中所有窗口进行管理、动画处理、Input 分发处理、display 管理。
  • PackageManagerService
负责 Package 的管理,应用程序的安装、卸载、信息查询。