Android AMS——启动Activity(六)

        上一篇分析了进程不存在的情况,我们创建了一个新的 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),                                     

你可能感兴趣的:(FW开发基础,android)