ActivityManagerService启动-android12

ActivityManagerService启动-android12

android12-release


AMS启动

SystemServer.run()->startBootstrapServices->ActivityTaskManagerService->ActivityManagerService
在这里插入图片描述

  • 启动ATMS服务mSystemServiceManager.startService(ActivityTaskManagerService.Lifecycle.class).getService()
  • ATMS服务启动时添加ACTIVITY_TASK_SERVICE = "activity_task"服务ServiceManager.addService()注册到binder
    在这里插入图片描述
  • 启动AMS服务ActivityManagerService.Lifecycle.startService(mSystemServiceManager, atm);,并与ATMS关联mActivityTaskManager = atm;
  • 设置AMS的系统服务管理器mActivityManagerService.setSystemServiceManager(mSystemServiceManager);
  • 设置AMS的APP安装器mActivityManagerService.setInstaller(installer);
  • WM全局锁mWindowManagerGlobalLock = atm.getGlobalLock();
    在这里插入图片描述
  • PMS启动后,初始化AMS相关的Power管理mActivityManagerService.initPowerManagement();
    在这里插入图片描述
  • 注册AMS管理的各种服务mActivityManagerService.setSystemProcess();ServiceManager.addService()注册到binder;
    Context.ACTIVITY_SERVICE\ProcessStats.SERVICE_NAME\
    "meminfo"\"gfxinfo"\"dbinfo"\"cpuinfo"\"permission"\"processinfo"\"cacheinfo"
    在这里插入图片描述
  • 使用ActivityManager实例完成监视程序设置,并侦听是否重新启动,只有在ActivityManagerService作为系统进程正确启动后才能执行此操作watchdog.init(mSystemContext, mActivityManagerService);
    在这里插入图片描述
  • DisplayManager需要立即覆盖

时序图

在这里插入图片描述


ATMS\AMS初始化

ATMS初始化

在这里插入图片描述在这里插入图片描述

  1. FactoryTest.getMode()默认是FACTORY_TEST_OFF = 0
  2. GL_ES_VERSION: opengles版本
  3. WindowOrganizerController: 用于组织窗口的界面的服务器端实现。
  4. TaskOrganizerController: 存储与给定窗口模式关联的TaskOrganizer及其关联状态。
  5. Context.ACTIVITY_TASK_SERVICE服务添加到ServiceManager
  6. mService.start()在LocalServices中添加ActivityTaskManagerInternal: LocalServices.addService(ActivityTaskManagerInternal.class, mInternal);

AMS初始化

在这里插入图片描述

  1. 创建"ActivityManager"的前台线程 mHandlerThread,并获取mHandler;创建"android.ui"的线程 mUiHandler
    在这里插入图片描述
  2. mFgBroadcastQueue前台广播接收器,在运行超过10s将放弃执行;mBgBroadcastQueue后台广播接收器,在运行超过60s将放弃执行;mOffloadBroadcastQueue offload广播接收器,在运行超过60s将放弃执行;
    在这里插入图片描述
  3. 创建ActiveServices,其中非低内存手机mMaxStartingBackground默认为8
    在这里插入图片描述 在这里插入图片描述
  4. mAppErrors报错弹框提示,如Crash、ANR
    在这里插入图片描述
  5. systemDir = SystemServiceManager.ensureSystemDir();创建目录/data/system
  6. mBatteryStatsService服务,mProcessStats 进程统计服务
    在这里插入图片描述
  7. 关联ATMS,并初始ATMS
    在这里插入图片描述
  8. 创建"CpuTracker"的线程,并更新CPU状态updateCpuStatsNow()
    在这里插入图片描述
  9. start()处理
    在这里插入图片描述

AMS.systemReady

SystemServer.run()->startOtherServices-> mActivityManagerService.systemReady

  1. mActivityManagerService.installSystemProviders(); 安装系统Provider
  2. AMS与WMS互相关联
    在这里插入图片描述
  3. AMS.systemReady 其中按goingCallback传参分为之前、中、后;
    在这里插入图片描述
    • goingCallback前mSystemReady 首次为flase,则不进入该分支。
      1》杀掉procsToKill中的进程;
      2》系统和进程都处于ready状态EventLogTags.writeBootProgressAmsReady(SystemClock.uptimeMillis())
    • goingCallback中:传递过来参数Runable类型。
      1》启动阶段550PHASE_ACTIVITY_MANAGER_READY
      2》启动WebView,并且会创建进程mWebViewUpdateService.prepareWebViewInSystemServer()
      3》StartSystemUI启动systemui服务;
      4》启动阶段600PHASE_THIRD_PARTY_APPS_CAN_START
      5》… … 等等
    • goingCallback后
      1》mSystemServiceManager.startUser回调所有SystemService的onStartUser();
      2》startPersistentApps
      3》mAtmInternal.startHomeOnAllDisplays(currentUserId, "systemReady")启动桌面Activity;
      4》sendUserStartBroadcast发送广播USER_STARTED、USER_STARTING;
      5》resumeTopActivities恢复栈顶Activity:mAtmInternal.resumeTopActivities(false /* scheduleIdle */);
      6》sendUserSwitchBroadcasts发送广播USER_SWITCHED;
      7》setBinderProxies

* 时序图

AMS启动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xhBruce

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值