在FallbackHome退出之后,这时候就要启动我们的Launcher了。值得注意的是Launcher并不是从AMS的systemReady方法中启动,而是在FallbackHome 执行 pause的时候调用。可以从调用堆栈里看出
//为了确认是FallbackHome的pause,特意在activityPause添加打印,打印信息如下:
//ActivityInfo:ActivityInfo{dc58c57 com.android.settings.FallbackHome}
java.lang.Exception
03-14 17:33:17.194 436 450 D test10 : at com.android.server.wm.ActivityStackSupervisor.startSpecificActivity(ActivityStackSupervisor.java:979)
03-14 17:33:17.194 436 450 D test10 : at com.android.server.wm.ActivityStack.resumeTopActivityInnerLocked(ActivityStack.java:1972)
03-14 17:33:17.194 436 450 D test10 : at com.android.server.wm.ActivityStack.resumeTopActivityUncheckedLocked(ActivityStack.java:1516)
03-14 17:33:17.194 436 450 D test10 : at com.android.server.wm.RootWindowContainer.resumeFocusedStacksTopActivities(RootWindowContainer.java:2311)
03-14 17:33:17.194 436 450 D test10 : at com.android.server.wm.ActivityStack.completePauseLocked(ActivityStack.java:1218)
03-14 17:33:17.194 436 450 D test10 : at com.android.server.wm.ActivityRecord.activityPaused(ActivityRecord.java:4973)
03-14 17:33:17.194 436 450 D test10 : at com.android.server.wm.ActivityTaskManagerService.activityPaused(ActivityTaskManagerService.java:1857)
03-14 17:33:17.194 436 450 D test10 : at android.app.IActivityTaskManager$Stub.onTransact(IActivityTaskManager.java:1944)
03-14 17:33:17.194 436 450 D test10 : at android.os.Binder.execTransactInternal(Binder.java:1154)
03-14 17:33:17.194 436 450 D test10 : at android.os.Binder.execTransact(Binder.java:1123)
看堆栈,FallbackHome在pause的时候,引起Launcher3的启动,调用到ActivityStackSupervisor的startSpecificActivity方法,后面的启动流程就和FallbackHome的启动一致了,具体参考Android11 FallbackHome启动和关闭流程分析