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

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.dtcms.com/a/325193.html

相关文章:

  • Ansys Mechanical中的声学分析
  • 人工智能与农业:农业的革新
  • Nginx学习笔记(二)——环境准备(VMware CentOS版)
  • Mybatis @Param参数传递说明
  • Postgresql源码(148)hash表的调试方法与技巧
  • Apache IoTDB 全场景部署:基于 Apache IoTDB 的跨「端-边-云」的时序数据库 DB+AI
  • ZeroNews:如何构建安全(无需 V*N!)的工业物联网连接
  • 企业高性能 Web 服务部署实践(基于 RHEL 9)
  • DNS(域名系统)
  • IP分片(IP Fragmentation)
  • NS3中的路由模型-5 OLSR路由协议
  • 疏老师-python训练营-Day42Grad-CAM与Hook函数
  • MySQL 基础操作教程
  • 学习嵌入式第二十五天
  • 机器学习——K-means聚类
  • 个人效能是一个系统
  • 【YOLO11改进 - C3k2融合】C3k2融合EBlock(Encoder Block):低光增强编码器块,利用傅里叶信息增强图像的低光条件
  • 学习嵌入式的第十六天——C语言——位运算
  • tlias智能学习辅助系统--原理篇-SpringBoot原理-自动配置-自定义starter
  • 【走进Docker的世界】深入理解Docker网络:从模式选择到实战配置
  • #Datawhale AI夏令营#第三期全球AI攻防挑战赛(AIGC技术-图像方向)
  • [Shell编程] Shell的正则表达式
  • P3232 [HNOI2013] 游走,solution
  • Python 程序设计讲义(68):Python 的文件操作——使用os模块操作文件
  • 整数规划-分支定界
  • Win10清理C盘步骤
  • 展锐平台(Android15)WLAN热点名称修改不生效问题分析
  • 最大子数组和-一维动态规划
  • C++ 黑马 引用
  • 一款轻量、免费、无广告,强大的演示工具,支持屏幕放大、涂鸦、截图、录屏