ActivityStack.resumeTopActivityLocked内で、Activityが1つも起動されていない場合、
ランチャーを起動するようになっています。
これにより、端末起動時にはまずランチャーが起動されることになります。
・ランチャー起動までのスタック
com.android.server.am.ActivityManagerService.startHomeActivityLocked()
com.android.server.am.ActivityStack.resumeTopActivityLocked(ActivityRecord)
com.android.server.am.ActivityManagerService.systemReady(Runnable)
ActivityManagerService.java
public void systemReady(final Runnable goingCallback) { mMainStack.resumeTopActivityLocked(null);
ActivityStack.java
final boolean resumeTopActivityLocked(ActivityRecord prev) { // Find the first activity that is not finishing. ActivityRecord next = topRunningActivityLocked(null); if (next == null) { // There are no more activities! Let's just start up the // Launcher... if (mMainStack) { return mService.startHomeActivityLocked(); // ランチャー起動 } }
systemReadyが呼ばれる契機は、Androidの起動シーケンスに関わる話題なので割愛。
以上です。