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

单步调试Android Framework——App冷启动

在这里插入图片描述

纸上得来终觉浅,绝知此事要躬行。 —— [宋]陆游

基于aosp_cf_x86_64_phone-trunk_staging-eng , 下面是具体断点位置。

第一部分,桌面launcher进程

com.android.launcher3.touch.ItemClickHandler

  • onClick
  • onClickAppShortcut
  • startAppShortcutOrInfoActivity

com.android.launcher3.Launcher

  • startActivitySafely

com.android.launcher3.views.ActivityContext

  • startActivitySafely

android.app.Activity

  • startActivity(android.content.Intent, android.os.Bundle)

com.android.launcher3.uioverrides.QuickstepLauncher

  • startActivityForResult

com.android.launcher3.Launcher

  • startActivityForResult

android.app.Activity

  • startActivityForResult(android.content.Intent, int, android.os.Bundle)

android.app.Instrumentation

  • execStartActivity

第二部分,系统服务进程

com.android.server.wm.ActivityTaskManagerService

  • startActivity
  • startActivityAsUser
  • startActivityAsUser // 初始化了ActivityStarter

com.android.server.wm.ActivityStarter

  • execute
  • executeRequest // 准备了ActivityRecord
  • startActivityUnchecked
  • startActivityInner

com.android.server.wm.Task

  • startActivityLocked // 准备切换动画,此处WMS,showStartingWindow

com.android.server.wm.StartingSurfaceController

  • showStartingWindow

com.android.server.wm.ActivityRecord

  • showStartingWindow

com.android.server.wm.RootWindowContainer

  • resumeFocusedTasksTopActivities

com.android.server.wm.Task

  • resumeTopActivityUncheckedLocked
  • resumeTopActivityInnerLocked

com.android.server.wm.TaskFragment

  • resumeTopActivity

com.android.server.wm.ActivityTaskManagerService

  • startProcessAsync

com.android.server.am.ActivityManagerService.LocalService

  • startProcess
    com.android.server.am.ActivityManagerService
  • startProcessLocked

com.android.server.am.ProcessList

  • startProcessLocked

com.android.server.am.ProcessList

  • startProcessLocked

com.android.server.am.ProcessList

  • startProcess

android.os.Process

  • start

android.os.ZygoteProcess

  • start
  • startViaZygote
  • zygoteSendArgsAndGetResult
  • attemptZygoteSendArgsAndGetResult

android.app.ActivityThread

  • main
  • attach

com.android.server.am.ActivityManagerService

  • attachApplication // 目标进程已启动
  • attachApplicationLocked
  • finishAttachApplicationInner

// — ActivityThread
android.app.ActivityThread.ApplicationThread

  • bindApplication // 组装一个AppBindData

android.app.ActivityThread.H

  • handleMessage

android.app.ActivityThread

  • handleBindApplication

android.app.Instrumentation

  • callApplicationOnCreate
    // — ActivityThread

com.android.server.wm.ActivityTaskManagerService.LocalService

  • attachApplication

com.android.server.wm.RootWindowContainer

  • attachApplication

com.android.server.wm.ActivityTaskSupervisor // LaunchActivityItem

  • realStartActivityLocked
    // While there are activities pausing we skipping starting any new activities until pauses are complete.
    • if (!mRootWindowContainer.allPausedActivitiesComplete())

com.android.server.wm.ClientLifecycleManager

  • scheduleTransactionAndLifecycleItems
  • scheduleTransaction

android.app.servertransaction.ClientTransaction

  • schedule

第三部分,目标应用进程

android.app.ActivityThread.ApplicationThread

  • scheduleTransaction

android.app.ClientTransactionHandler // ActivityThread的父类,此时,ActivityThread已经启动了

  • scheduleTransaction

android.app.ActivityThread.H

  • handleMessage // EXECUTE_TRANSACTION

android.app.servertransaction.TransactionExecutor

  • execute
  • executeLifecycleState
  • executeLifecycleItem

android.app.servertransaction.ActivityTransactionItem

  • execute(android.app.ClientTransactionHandler, android.app.servertransaction.PendingTransactionActions)

android.app.servertransaction.LaunchActivityItem //ActivityClientRecord

  • execute

android.app.ActivityThread

  • handleLaunchActivity // 这里已经触发了ON_CREATE

android.app.ActivityThread

  • performLaunchActivity

android.app.Instrumentation

  • newActivity(java.lang.ClassLoader, java.lang.String, android.content.Intent)

android.app.Activity

  • attach // 此时出现PhoneWindow 窗口

android.app.Instrumentation

  • callActivityOnCreate(android.app.Activity, android.os.Bundle)

android.app.Activity

  • performCreate(android.os.Bundle)
  • onCreate(android.os.Bundle)

时序图

在这里插入图片描述


http://www.kler.cn/a/440799.html

相关文章:

  • 使用 Wireshark 和 Lua 脚本解析通讯报文
  • 【论文阅读】Adversarial A!acks on Adaptive Cruise Control Systems
  • 【Python爬虫系列】_033.Scrapy_分布式爬虫
  • 2024年全球安全故障弹簧制动器行业总体规模、主要企业国内外市场占有率及排名
  • Python 常用内置函数
  • 【Python】【办公解决方案】【会议系统】【屏幕共享】【远程画面】Python局域网屏幕共享应用
  • Elasticsearch 集群快照的定期备份设置指南
  • Java 和 J2EE 有什么不同?
  • 基于NodeJs+Express+MySQL 实现的个人博客项目
  • 序列傅里叶变换的性质|时移特性
  • 基于单片机的非接触式红外测温系统
  • 青训营-豆包MarsCode技术训练营试题解析四十一
  • Redis篇之Redis高可用模式参数调优,提高Redis性能
  • scala的统计词频
  • 【Java】正则表达式基础题+场景题练习
  • 宠物兔需要洗澡吗?
  • rust的axux框架开启负载均衡和重启自身的方法-会议签到的调优
  • freeipa 主主搭建
  • ASR-LLM-TTS 实时语音对话助手:语音识别、大模型对话、声音生成
  • Fiddler简单使用