上一篇分析了进程不存在的情况,我们创建了一个新的 APP 进程。这里我们在分析一下进程存在的情况,执行 realStartActivityLocked() 方法启动 Activity。
源码位置:/frameworks/base/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
- 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),