Framework - AMS

文章详细阐述了在Android10版本中,从Activity的startActivity方法开始,如何通过Instrumentation调用ActivityTaskManagerService(ATMS)进行跨进程通信,进而涉及到PMS(PackageManagerService)的交互,最终启动APP或跳转Activity的整个流程。该过程包括权限检查、ActivityRecord创建、进程管理等多个步骤。

参考文章

一、概念

Android10(API29)开始,ActivityTaskManagerService 接管 ActivityManagerService。

二、启动ATMS过程

三、启动APP & 跳转Activity过程

  1. 调用 Activity 的 startActivity 方法来启动目标 Activity
  2. 接着就会调用到 Instrunmentation 的 execStartActivity 方法,通过获取 ATMS 的 binder 代理对象,然后调用到 ATMS 的 startActivity 中去
  3. 调用到 ATMS 中后,会执行到ActivityStarter 的 execute 方法,内部最终执行到了 executeRequest ,接着就会进行一些校验和判断权限,包括进程检查,intent检查,权限检查等,后面就会创建 ActivityRecord ,用来保存 Activity 的相关信息,
  4. 然后就会根据启动模式计算 flag ,设置启动 Activity 的 Task 栈。
  5. 在 ActivityTaskSupervisor 中检查要启动的 Activity 进程是否存在,存在则向客户端进程 ApplicationThread 回调启动 Activity,否则就创建进程。
  6. 会调到 ActivityThread 后在 TransactionExecute 中开始执行system_server回调回来的事务,处理各种回调,切换到对应的生命周期
  7. 最后又回调到 ActivityThread 的 handleLaunchActivity 来启动 Activity。在其中调用了 pe
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值