Android Framework重要类分析

1.SystemServer

  • 创建并启动主线程 Looper,使能线程间通讯:Looper.prepareMainLooperLooper.loop
  • 加载 android_servers.so 库:System.loadLibrary("android_servers")
  • 初始化系统上下文:createSystemContext
  • 创建系统服务管理 ServiceManager:new SystemServiceManager
  • 启动各种服务:startBootstrapServicesstartCoreServicesstartOtherServices

SystemServer启动Launcher流程

SystemServer启动SystemUI的过程

​​​​​​​

引导服务 

LightsService,UserManagerService,SensorService,DisplayManagerService,PackageManagerService,ActivityManagerService,PowerManagerService

核心服务

BatteryService,UsageStatsService,WebViewUpdateService

其它服务

主要做的就是启动一系列的服务(共 70 余个),如:AlarmManagerService,VibratorService 等。

2.ActivityManagerService:

负责Android管理系统Activity,Service,ContentProvider和BroadcastReceiver 四大组件,

还负责Android系统中的进程管理

​​​​​​​ 

3.PowerManagerService

  • 解析AndroidManifest.xml 主要包括AndoridManifest中节点的信息。

  • 扫描本地文件,主要针对apk,主要是系统应用,本地安装应用等。

  • 管理本地apk,主要包括安装和删除等。

阶段1:BOOT_PROGRESS_PMS_START

主要工作:

  • 构造DisplayMetrics,保存分辨率等相关信息

  • 创建Installer对象 与InstallId交互

  • 创建mPermissionManager对象,进行权限管理

  • 构造Settings类,保存安装包信息,清除路径不存在的孤立应用,主要涉及/data/system目录下的packages.xml,package-backup.xml,packages.list,packages-stopped.xml,packages-stopped-backup.xml等文件。

  • 构造PackageDexOptimizer及DexManager类,处理dex优化;

  • 创建SystemConfig实例,获取系统配置信息,配置共享lib库

  • 创建PackageManager的handler线程,循环处理外部安装相关消息。

阶段2:BOOT_PROGRESS_PMS_SYSTEM_SCAN_START

主要工作:

  • 从init.rc中获取环境变量BOOTCLASSPATH和SYSTEMSERVERCLASSPATH;
  • 对于旧版本升级的情况,将安装时获取权限变更为运行时申请权限
  • 扫描system/vendor/product/odem/oem 等目录的priv-app ,app ,overlay包
  • 清除安装时临时文件以及其他不必要的信息。

阶段3:BOOT_PROGRESS_PMS_DATA_SCAN_START

主要工作:解析核心应用,处理data目录下的应用信息,更新,删除不必要的数据。

阶段四:BOOT_PROGRESS_PMS_SCAN_END

主要工作:

  • sdk版本变更,更新权限
  • OTA升级后首次启动,清除不必要的缓存数据
  • 权限等默认更新后,清理相关数据
  • 更新package.xml

阶段五:BOOT_PROGRESS_PMS_READY

主要工作有:

  • 创建PackageInstallerService对
  • GC回收内存
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值