Android源码のFramework框架层

目录:
1、概识
2、ActivityManager
3、WindowManager
4、几个SystemServer出现过的类

进击的小仙

1. 概识Framework

Android源码のFramework框架层_第1张图片
应用程序框架层

ApplicationFramework 即应用程序框架层,这个框架层里包含了很多Manager,这些Manager里对应着很多系统服务,如 ActivityManager对应 ActivityManagerServicePackageManager对应 PackageManagerServiceWindowManager对应着 WindowManagerService等等。这些系统服务都是在SystemServer进程的run()方法中启动的。
从Linux内核到应用程序,进程的启动流程是:

Linux的init进程 → Zygote进程 → SystemServer进程 → App的进程

1.1. 系统服务

系统服务 可以分为三种类型:

  • BootStrapServices 引导服务类型
  • CoreServices 核心服务类型
  • OtherServices 其他服务类型

启动 系统服务:
系统服务由SystemServer.java类启动,在该类的main主函数中会调用run()方法,run()方法首先实例化SystemServiceManager对象,再利用LocalService.addService()方法将这个管理器对象添加到LocalService中。

 // Create the system service manager.
mSystemServiceManager = new SystemServiceManager(mSystemContext);
LocalServices.addService(SystemServiceManager.class, mSystemServiceManager);

然后依次调用以下三个函数来启动各系统服务:

startBootstrapServices(); // 引导类服务
startCoreServices(); // 核心类服务
startOtherServices(); // 其他类服务

具体是通过mSystemServiceManagerstartService()方法来启动各服务,如AMS服务的启动:

mActivityManagerService = mSystemServiceManager.startService(
                ActivityManagerService.Lifecycle.class).getService();

系统服务的启动顺序
InstallerActivityManagerService
PowerManagerService
ActivityManagerService
DisplayManagerService
PackageManagerService
UserManagerService
SensorService
BatteryService
UsageStatsService
WebViewUpdateService
OtherServices

1.2. BootStrapServices 引导服务

  • ActivityManagerService【管理整个框架中任务、进程管理, Intent解析等的核心实现,管理四大组建的生命周期】
  • PowerManagerService【电源管理服务】
  • LightsService【光感服务】
  • DisplayManagerService【展示管理服务】
  • PackageManagerService【包管理服务】
  • UserManagerService【用户管理服务】
  • SensorService【传感器服务】

1.3. CoreServices 核心服务

  • BatteryService【电池管理服务】
  • UsageStatsService【用户使用状态服务】
  • WebViewUpdateService【WebView更新服务】

1.4. OtherServices其他服务

  • SchedulingPolicyService【调度策略服务】
  • TelecomLoaderService【电信加载服务】
  • TelephonyRegistry【提供电话注册、管理服务,可以获取电话的链接状态、信号强度等等服务】
  • CameraService【相机服务】
  • AccountManagerService【账户管理服务,需先于ContentService启动】
  • ContentService【内容服务,主要是数据库等提供解决方法的服务】
  • VibratorService【震动服务】
  • ConsumerIrService【远程控制服务,通过红外等控制周围的设备(例如电视等)】
  • AlarmManagerService【闹钟、定时器服务】
  • InputManagerService【处理分发事件,从WindowManagerService独立出来的】
  • WindowManagerService【窗口管理服务】
  • BluetoothService【蓝牙服务】
  • InputMethodManagerService【输入法服务】
  • AccessibilityManagerService【辅助管理程序截获所有的用户输入,并根据这些输入给用户一些额外的反馈,起到辅助的效果,View的点击、焦点等事件分发管理服务】
  • MountService【磁盘加载服务程序,NotificationManagerService依赖这个服务】
  • UiModeManagerService【夜间模式和行车模式管理服务】
  • LockSettingsService【锁屏设置服务】
  • PersistentDataBlockService【永久数据存储分区服务】
  • DeviceIdleController【设备idle状态控制器】
  • DevicePolicyManagerService【设备策略管理服务】
  • StatusBarManagerService【状态栏管理服务】
  • ClipboardService【剪贴板服务】
  • NetworkManagementService【网络管理服务】
  • TextServicesManagerService【文本服务】
  • NetworkScoreService【android.net.NetworkScoreManager的备份服务】
  • NetworkStatsService【网络状态服务】
  • NetworkPolicyManagerService【网络策略管理服务】
  • WIFI_P2P_SERVICE【】
  • WIFI_SERVICE【】
  • WifiScanningService【】
  • RttService【】
  • ETHERNET_SERVICE【】
  • ConnectivityService【连接服务】
  • NsdService【网络服务搜索】
  • UPDATE_LOCK_SERVICE【】
  • NotificationManagerService【广播管理服务】
  • DeviceStorageMonitorService【设备存储模拟器服务】
  • LocationManagerService【GPS、定位等位置服务】
  • CountryDetectorService【检测所在国家服务】
  • SearchManagerService【搜素管理服务 】
  • DropBoxManagerService【系统运行时日志的存储与管理服务】
  • WallpaperManagerService【壁纸管理服务】
  • AudioService【音频服务】
  • DockObserver【管理座子的插入与拔出】
  • MidiManagerService【乐器数字接口管理服务】
  • UsbService【USB服务】
  • SerialService【串口设备服务】
  • TwilightService【夜间模式服务】
  • JobSchedulerService【工作调度服务】
    ....有点多,以后再贴~~~

2. ActivityManager

ActivityManager管理和维护系统中所有正在运行着的Activity的相关信息,并提供了相关的访问接口。ActivityManager类的类注释(与系统中所有运行着的Activity进行交互):

Interact with the overall activities running in the system.

Android源码のFramework框架层_第2张图片
Paste_Image.png

ActivityManager作为客户端,他的所有操作最终都由AMS(ActivityManagerService)来完成。

Android源码のFramework框架层_第3张图片
Paste_Image.png

2.1. AMS

AMS(ActivityManagerService)是管理系统组件的核心服务,负责四大组件的启动、切换、调度,进程的管理和调度等等。他的初始化由SystemServer在执行run()方法的时候完成,之后便独立运行在进程中。
所在目录:
/frameworks/base/services/java/com/android/server/am/ActivityManagerService.java
主要功能:

  • 統一调度各个Activity的运行:ActivityRecord
  • 进程管理:ProcessRecord
  • 内存管理:TaskRecord

2.2. 代理模式

代理模式是设计模式中的一种,为了解耦,ActivityManager和AMS二者通过代理模式实现交互。ActivityManagerProxyActivityManager的代理,也称为本地代理;ActivityManagerNativeActivityManagerService的代理,也称为远端代理。

2.3. Binder粘合剂

Binder作为粘合剂,主要是连接本地代理和远端代理。由远端代理ActivityManagerNative继承,在其中粘合本地代理。


3. WindowManager

外部访问Window的入口,可实现添加、删除、更新View。他的所有操作最后交由WMS(WindowManagerService)完成。与ActivityManager类不同,WindowManager是一个接口,接口注释为(应用与窗口管理器交互的接口):

The interface that apps use to talk to the window manager.

这个接口中的内容比较少,看看他的结构:

Android源码のFramework框架层_第4张图片
Paste_Image.png

WMS为所有窗口分配Surface,掌管Surface的显示顺序(Z-order)以及位置尺寸,控制窗口动画,并且还是输入系统的一重要的中转站。WMS的初始化也是由SystemServer在执行run()方法的时候完成的,初始化后运行在SystemServer进程中。初始化分以下三步:

  • 创建WMS实例:
wm = WindowManagerService.main(context, inputManager,
                    mFactoryTestMode != FactoryTest.FACTORY_TEST_LOW_LEVEL,
                    !mFirstBoot, mOnlyCore);
  • 添加到ServiceManager中:ServiceManager.addService(Context.WINDOW_SERVICE,wm);
  • 初始化显示信息:wm.displayReady();
  • 处理SystemReady通知:wm.systemReady();

4. 几个SystemServer出现过的类

4.1. SystemConfig

SystemConfig负责解析系统Permissions和Feature信息。
类注释中说是加载系统全局配置信息:

Loads global system configuration info.

Android源码のFramework框架层_第5张图片
Paste_Image.png

4.2. EntropyMixer

生成随机数的服务,前生是EntropyService

4.3. Watchdog

Watchdog用于监测Service是否处于正常的工作中。他是一个线程,运行在SystemServer进程中。

This class calls its monitor every minute. Killing this process if they don't return

5. 参考资料

深入理解 PackageManagerService
Android 系统服务一览表
SystemServer进程源码分析之一
Android Framework之PMS篇【PackageManagerService】

你可能感兴趣的:(Android源码のFramework框架层)