一、概念
Android10(API29)开始,ActivityTaskManagerService 接管 ActivityManagerService。
二、启动ATMS过程
三、启动APP & 跳转Activity过程
- 调用 Activity 的 startActivity 方法来启动目标 Activity
- 接着就会调用到 Instrunmentation 的 execStartActivity 方法,通过获取 ATMS 的 binder 代理对象,然后调用到 ATMS 的 startActivity 中去
- 调用到 ATMS 中后,会执行到
ActivityStarter的 execute 方法,内部最终执行到了 executeRequest ,接着就会进行一些校验和判断权限,包括进程检查,intent检查,权限检查等,后面就会创建ActivityRecord,用来保存 Activity 的相关信息, - 然后就会根据启动模式计算 flag ,设置启动 Activity 的 Task 栈。
- 在 ActivityTaskSupervisor 中检查要启动的 Activity 进程是否存在,存在则向客户端进程 ApplicationThread 回调启动 Activity,否则就创建进程。
- 会调到 ActivityThread 后在 TransactionExecute 中开始执行system_server回调回来的事务,处理各种回调,切换到对应的生命周期
- 最后又回调到 ActivityThread 的 handleLaunchActivity 来启动 Activity。在其中调用了 pe

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

被折叠的 条评论
为什么被折叠?



