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

Launcher3启动

Launcher3启动

startOtherServices

//frameworks/base/services/java/com/android/server/SystemServer.java
private void startOtherServices(@NonNull TimingsTraceAndSlog t) {mActivityManagerService.systemReady(() -> {Slog.i(TAG, "Making services ready");t.traceBegin("StartActivityManagerReadyPhase");mSystemServiceManager.startBootPhase(t, SystemService.PHASE_ACTIVITY_MANAGER_READY);t.traceEnd();t.traceBegin("StartObservingNativeCrashes");try {mActivityManagerService.startObservingNativeCrashes();} catch (Throwable e) {reportWtf("observing native crashes", e);}t.traceEnd();t.traceBegin("RegisterAppOpsPolicy");try {mActivityManagerService.setAppOpsPolicy(new AppOpsPolicy(mSystemContext));} catch (Throwable e) {reportWtf("registering app ops policy", e);}t.traceEnd();// No dependency on Webview preparation in system server. But this should// be completed before allowing 3rd partyfinal String WEBVIEW_PREPARATION = "WebViewFactoryPreparation";Future<?> webviewPrep = null;if (mWebViewUpdateService != null) {webviewPrep = SystemServerInitThreadPool.submit(() -> {Slog.i(TAG, WEBVIEW_PREPARATION);TimingsTraceAndSlog traceLog = TimingsTraceAndSlog.newAsyncLog();traceLog.traceBegin(WEBVIEW_PREPARATION);ConcurrentUtils.waitForFutureNoInterrupt(mZygotePreload, "Zygote preload");mZygotePreload = null;mWebViewUpdateService.prepareWebViewInSystemServer();traceLog.traceEnd();}, WEBVIEW_PREPARATION);}
}

systemReady()

//frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
mAtmInternal = LocalServices.getService(ActivityTaskManagerInternal.class);......
public void systemReady(final Runnable goingCallback, @NonNull TimingsTraceAndSlog t) {......if (isBootingSystemUser && !UserManager.isHeadlessSystemUserMode()) {t.traceBegin("startHomeOnAllDisplays");mAtmInternal.startHomeOnAllDisplays(currentUserId, "systemReady");t.traceEnd();}.......
}

startHomeOnAllDisplays()

//frameworks/base/services/core/java/com/android/server/wm/ActivityTaskManagerService.javapublic void setWindowManager(WindowManagerService wm) {synchronized (mGlobalLock) {mWindowManager = wm;mRootWindowContainer = wm.mRoot;......}}@Overridepublic boolean startHomeOnAllDisplays(int userId, String reason) {synchronized (mGlobalLock) {return mRootWindowContainer.startHomeOnAllDisplays(userId, reason);}}

startHomeOnAllDisplays(

//frameworks/base/services/core/java/com/android/server/wm/RootWindowContainer.javaboolean startHomeOnAllDisplays(int userId, String reason) {boolean homeStarted = false;for (int i = getChildCount() - 1; i >= 0; i--) {final int displayId = getChildAt(i).mDisplayId;homeStarted |= startHomeOnDisplay(userId, reason, displayId);}return homeStarted;}
http://www.xdnf.cn/news/17634.html

相关文章:

  • 实战:用 PyTorch 复现一个 3 层全连接网络,训练 MNIST,达到 95%+ 准确率
  • IoT/透过oc_lwm2m/boudica150 源码中的AT指令序列,分析NB-IoT接入华为云物联网平台IoTDA的工作机制
  • Java使用“Microsoft Print To PDF”打印时如何指定输出路径
  • Vue 利用el-table和el-pagination组件,简简单单实现表格前端分页
  • AI时代基于云原生的 CI/CD 基础设施 Tekton
  • Dubbo从入门到实战:分布式服务开发指南
  • USB 基本描述符
  • 视频播放器哪个好用?视频播放器PotPlayer,KMP Player
  • 下一个排列 的 思路总结
  • 从零开始的云计算生活——项目实战容器化
  • 标准IO详解(fgets、gets、fread、fwrite、fseek 等应用)
  • Java 包装类简单认识泛型
  • 《深度解构:React与Redux构建复杂表单的底层逻辑与实践》
  • C#使用EPPlus读写Excel
  • ubuntu20.04交叉编译vlc3.0.21 x64 windows版本
  • 大模型落地:AI 技术重构工作与行业的底层逻辑
  • Pytest 全流程解析:执行机制与报告生成实战指南
  • java 插入式注解的打开方式!
  • MySQL,Redis重点面试题
  • SQL179 每个6/7级用户活跃情况
  • Spring Framework源码解析——BeanPostProcessor
  • 【学习嵌入式day-22-Linux软件编程-IO】
  • SpringBoot集成支付宝二维码支付接口详解
  • Python3.10 + Firecrawl 下载 Markdown 文档:构建高效通用文章爬虫
  • 不同FPGA开发板系统移植步骤
  • Chrome插件开发【Service Worker练手小项目】
  • 【LeetCode刷题集】--排序(三)
  • 【智能的起源】人类如何模仿,简单的“刺激-反应”机制 智能的核心不是记忆,而是发现规律并能迁移到新场景。 最原始的智能:没有思考,只有简单条件反射
  • Mamba 原理汇总2
  • AI(2)-神经网络(激活函数)