上一篇分析了进程不存在的情况,我们创建了一个新的 APP 进程。这里我们在分析一下进程存在的情况,执行 realStartActivityLocked() 方法启动 Activity。
一、启动Activity
ActivityTaskSupervisor
源码位置:/frameworks/base/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
realStartActivityLocked
final ActivityTaskManagerService mService;
boolean realStartActivityLocked(ActivityRecord r, WindowProcessController proc,
boolean andResume, boolean checkConfig) throws RemoteException {
// 创建启动 Activity 的事务
// proc.getThread() 获取的是一个 IApplicationThread 对象
final ClientTransaction clientTransaction = ClientTransaction.obtain(
proc.getThread(), r.appToken);
final boolean isTransitionForward = r.isTransitionForward();
// 为事务设置 Callback LaunchActivityItem,在客户端时会被调用
clientTransaction.addCallback(LaunchActivityItem.obtain(new Intent(r.intent),