首页 > 其他分享 >Android13.0的activity启动流程

Android13.0的activity启动流程

时间:2022-11-16 17:36:14浏览次数:51  
标签:... java IActivityTaskManager 流程 intent activity android Android13.0 app

基于 Android 13.0 相关源码:

frameworks/base/services/core/java/com/android/server/wm/
ActivityTaskManagerService.java ActivityStarter.java RootWindowContainer.java Task.java TaskFragment.java ActivityTaskSupervisor.java frameworks/base/core/java/android/app/ Activity.java Instrumentation.java IActivityTaskManager.java IActivityTaskManager.aidl IApplicationThread.aidl ApplicationThread.java ClientTransactionHandler.java ActivityThread.java UiTranslationController.java

 

 

activity启动流程调用流向:

Activity.java

startActivity -> startActivityForResult
Instrumentation.java
-> execStartActivity
IActivityTaskManager.java IActivityTaskManager.aidl
-> IActivityTaskManager.Stub.asInterface( ServiceManager.getService(Context.ACTIVITY_TASK_SERVICE)) . startActivity
.
.
. (old_app_process通过AIDL-> binder跨进程调用到system_process)
.
.
ActivityTaskManagerService.java (extends IActivityTaskManager.Stub)
startActivity -> startActivityAsUser -> getActivityStartController().obtainStarter(intent, "startActivityAsUser").execute();
【此处obtainStarter是从ActivityStarter的成员变量异步池中获取activitystater,此池子容量为3(刚刚,现在,即将),获取后为其赋值此次启动的关键参数,都放在成员变量mRequest中,Request是静态内部类】
ActivityStarter.java
execute
【如果 mRequest.activityInfo == null 那么 mRequest.resolveActivity(mSupervisor)进行解析;;如果action是关机或者重启,则通过ShutdownCheckPoints记录是谁干的】
【此处的 resolveActivity 函数内会创建新的intent以避免对客户端传来的intent对象修改,
并通过 supervisor.resolveIntent(intent... 对成员变量resolveInfo赋值(这里可以为特殊应用添加独特的resolve方法赋值resolveInfo,来跳转到特定应用如weixin、chooseActivity等)
通过 supervisor.resolveActivity(intent... 对成员变量activityInfo赋值】
-> executeRequest -> startActivityUnchecked -> startActivityInner -> resumeFocusedTasksTopActivities
RootWindowContainer.java
-> resumeFocusedTasksTopActivities -> resumeTopActivityUncheckedLocked
Task.java
-> resumeTopActivityUncheckedLocked
TaskFragment.java
-> resumeTopActivity
ActivityTaskSupervisor.java
-> startSpecificActivity -> realStartActivityLocked
IApplicationThread.aidl
-> scheduleTransaction
.
.
. system_process通过AIDL-> binder跨进程调用到new_app_process
.
.
private class ApplicationThread (extends IApplicationThread.Stub) in ActivityThread.java
-> scheduleTransaction
(ActivityThread extends) ClientTransactionHandler.java
-> scheduleTransaction
ActivityThread.java
sendMessage(H.UPDATE_UI_TRANSLATION_STATE, args)
H (in ActivityThread)
匹配case处理 :
Activity.java
updateUiTranslationState
UiTranslationController.java
updateUiTranslationState ( 这里做具体的Update the Ui translation state. 并打印log onAutoTranslationStateChange(): unknown state:) 


 

 

package android.app;   ---frameworks/base/core/java/android/app/

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

package com.android.server.wm;   ---frameworks/base/services/core/java/com/android/server/wm/

标签:...,java,IActivityTaskManager,流程,intent,activity,android,Android13.0,app
From: https://www.cnblogs.com/1118zjg/p/16890178.html

相关文章

  • 接口测试的流程
    接口通俗的理解就是不同部分之间的连接通道,可以是程序之内的,也可以是不同程序之间的。一般公司都会要求做接口测试,因为这是测试前移和测试左移的一种方式,会极大的解决bug的......
  • (笔者推荐)【Java权威指南】「官方文档-中英互译」AQS的源码注释分析,贯穿总体核心流程
    前提说明本文主要针对于Java官方文档中的先关的官方注释进行中英文互译,保证了源码坐着的设计思路以及相关知识技能介绍分析等,本文主要进行介绍AQS的源码官方注释的含义介绍,......
  • Oracle11g RAC集群启动流程
    一、集群与资源启动顺序启动流程步骤层次梳理第一层:OHASD启动:cssdagent-负责启动CSSD的Agent。orarootagent-负责启动所有root用户下的ohasd资源的A......
  • 【tensorflow2.6】图片数据建模流程:猫狗分类,83.6%识别率
    目标:识别猫和狗一、猫狗数据集数据集下载:公众号,回复:猫狗数据集训练数据集(每一张图片都有dog和cat标签):测试集(图片没有标签):二、训练环境kaggletenslrflow2.6三、数据处理impo......
  • 从定标准到搭流程,看UWA性能保障体系搭建的实例分享
    本次分享选自UWADAY2022“UWA性能保障体系进一步拓展”议题,来自侑虎科技CTO张强的分享。从“性能评分”、“推荐值”、“设备分档”和“自动化平台”四部分介绍UWA团队......
  • Linux启动流程rcN.d rcS.d rc.local等
    1环境当前系统环境为:Linuxmintmate17.1(基于ubuntu14.04的衍生版)备注:/etc/rc.d文件夹中的脚本文件的链接目标为:/etc/init.d文件夹下的脚本(为系统运行级别‘数字’......
  • vue源码分析-挂载流程和模板编译
    前面几节我们从newVue创建实例开始,介绍了创建实例时执行初始化流程中的重要两步,配置选项的资源合并,以及响应式系统的核心思想,数据代理。在合并章节,我们对Vue丰富的选项......
  • Activiti流程引擎
    POM依赖<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance......
  • 程序流程控制
    流程控制语句(37-46)1、顺序结构程序默认流程2、分支结构if,switchswitch注:不要忘记写break,否则会出现穿透现象Switch的穿透性3、循环结构for、while、do...wh......
  • 【深入浅出 Yarn 架构与实现】3-1 Yarn Application 流程与编写方法
    本篇学习YarnApplication编写方法,将带你更清楚的了解一个任务是如何提交到Yarn,在运行中的交互和任务停止的过程。通过了解整个任务的运行流程,帮你更好的理解Yarn运......